社区
MS-SQL Server
帖子详情
为什么SQL server中的表只能有一个聚集索引?
Lucenedonet
2011-09-21 02:30:43
解释最多的是,每个表的排序只能按照一种方式,由于聚集索引是和表中的行相一致的。所以只能有一个聚集索引。
但是
表有很多字段,每个字段完全可以重新建立一个聚集索引呐!
...全文
1163
38
打赏
收藏
为什么SQL server中的表只能有一个聚集索引?
解释最多的是,每个表的排序只能按照一种方式,由于聚集索引是和表中的行相一致的。所以只能有一个聚集索引。 但是 表有很多字段,每个字段完全可以重新建立一个聚集索引呐!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
潇洒王子
2011-09-23
打赏
举报
回复
不要想的太复杂了
yzsind
2011-09-22
打赏
举报
回复
聚集索引只能有一个的原因是表数据只有一份,只能按一种排序规则组织。
如果表数据可以有多份,那就可以建多个聚集索引,也许将来数据库厂商会考虑这种需求,就是用空间换性能,但现在的数据库都没有实现一个表有多份数据的存储结构,因为实现的技术成本很高(每个insert,delete,update都要维护多份数据,还有锁之类的管理),占用空间也大,对实际应用的优化效果比较难平衡,大部份情况可能性能更差。
NBDBA
2011-09-22
打赏
举报
回复
[Quote=引用 31 楼 lucenedonet 的回复:]
我觉得能找到两个索引排序方式和物理存储一致的。
但好像又不大可能。
看过聚集索引的B树,就知道,其实物理存储页已经在索引里面了!
这样一来,就不能有第二种索引了!
除非是非聚集索引
[/Quote]
理解了就结贴
nzperfect
2011-09-22
打赏
举报
回复
楼主你要能说服所有的数据库厂家按你的这种多聚集索引来存储数据的话,也是一个划时代的变革了
至少目前存储硬件如此慢的今天,还不可能这样做。
如果将来硬件不是问题,也难说不会改变现有的存储方式及查询算法,哈哈
哈哈王戈多
2011-09-22
打赏
举报
回复
我也来学习学习
gogodiy
2011-09-22
打赏
举报
回复
聚集索引决定了表中记录的物理排序。物理排序同一时间里只能有一种排序吧,你不可能同一时间又按照姓名物理排序,又按照编号物理排序。所以聚集索引同一时间只能有一个。
建议楼主仔细看下索引相关方面的基本知识。
Lucenedonet
2011-09-22
打赏
举报
回复
我觉得能找到两个索引排序方式和物理存储一致的。
但好像又不大可能。
看过聚集索引的B树,就知道,其实物理存储页已经在索引里面了!
这样一来,就不能有第二种索引了!
除非是非聚集索引
ningweidong
2011-09-22
打赏
举报
回复
索引方式是能有一个是聚集方式
就像字典的索引,要么按字母排序,要么按笔画排序,
虽然说有很多排序方式,但是只能用其中一个作为主要的
b2b160
2011-09-22
打赏
举报
回复
楼主将聚集索引理解为普通索引了,其实就是表的存储顺序,一个表存一次就好了,否则冗余太大了
showjim
2011-09-21
打赏
举报
回复
单纯的理论上,聚集索引的数量是由数据份数决定的,如果有多份数据,也是可以有多个聚集索引的。
一般情况下这个代价比普通索引代价大很多,所以数据库一般的都只支持一份数据。
zhongxin799
2011-09-21
打赏
举报
回复
物理顺序当然只有一个
petrie
2011-09-21
打赏
举报
回复
想想电话簿!
oO寒枫Oo
2011-09-21
打赏
举报
回复
5k万行的表 重新建立 索引
应该2小时内就可以了吧
Lucenedonet
2011-09-21
打赏
举报
回复
What makes a clustered index special is that the leaf level of a clustered index is the actual data—that is, the data is re-sorted to be stored in the same physical order that the index sort criteria state.
第二行中间 re-sorted 是亮点。
果然重新组织了数据,那要是给5k万行的表重新建立聚集索引,那5kw行的数据都要动啊。
yubofighting
2011-09-21
打赏
举报
回复
[Quote=引用 8 楼 geniuswjt 的回复:]
龟腚!!
[/Quote]
+
koumingjie
2011-09-21
打赏
举报
回复
聚集索引是表的物理排列顺序,同一个表的物理顺序是唯一的,所以聚集索引只能有一个
Lucenedonet
2011-09-21
打赏
举报
回复
[Quote=引用 19 楼 lxpbs8851 的回复:]
是的 你得先把 “拼音”聚集索引 drop掉
[/Quote]
OK
DROP INDEX idx_pinyin ON dictionary;
oO寒枫Oo
2011-09-21
打赏
举报
回复
当然 聚集索引 可以允许多列的
(偏旁部首 desc , 拼音 asc)
oO寒枫Oo
2011-09-21
打赏
举报
回复
是的 你得先把 “拼音”聚集索引 drop掉
Lucenedonet
2011-09-21
打赏
举报
回复
如果说建立聚集索引之后,表的物理存储结构都已经改变,改变成符合成这个聚集索引的形式,那当然很难建立第二个聚集索引了!
就像上面童鞋所说,偏旁部首也可以建立聚集索引,但是当你把字典的顺序重新按照偏旁部首排序的话,那么拼音肯定不是聚集索引了。
加载更多回复(17)
SQL
Server
精华技巧集
一本集成了
SQL
数据库的精华技巧,适合常用
SQL
维护和学习的书籍
SQL
Server
2005基础教程电子教案
SQL
Server
2005基础教程--电子教案
SQL
Server
2008编程入门经典(第3版)
SQL
Server
2008编程入门经典。入门级的经典图书,我当年就是靠2005的入门经典开始学些数据库的。 个人觉得认真读完本书后再去学习
SQL
Server
技术内幕系列会更好
12道必须掌握的数据库面试题(
sql
server
2008)
这是一份有点难度的数据库面试题,会这12道,面试数据库题目基本没问题
sql
面试题大全
sql
面试题 大全 JSP 开发
MS-SQL Server
34,837
社区成员
254,634
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章