SqlServer为什么自动在主键上建立聚集索引

      微软推荐为每一个表建立一个聚集索引,但是由于sqlserver简单易用,而且很多人并不了解聚集索引,非聚集索引这些东西,所以如果sqlserver不在主键上建立聚集索引的话,可能会导致大部分的表都是堆结构,而堆结构是乱序存放的,检索很不方便,空间也不好管理,所以微软就来了个强硬的,如果不在建表的同事创建聚集索引,sqlserver会自动在主键上面建聚集索引。

      其实在网上的大部分资料都不推荐聚集索引建立在主键上,觉得这是浪费,理由是聚集索引查询比较快,应该建立在经常查询和具有同一属性值的列上(比如分类),这个好像说的过去。

      不过就本人目前处理过的数据(亿级),还没有充分的证据表明聚集建立在非主键上有明显的优势,因为一个表的查询不单是这个聚集索引查询,他还涉及其他查询,其他查询的索引还要依赖于聚集索引才能找到数据,况且表除了查询还有insert,update,delete 每一个操作都可能涉及聚集索引,如果主键不是聚集索引的话,insert 一条记录,update,delete通过主键修改某条记录可能都需要走两步,第一步,先找到主键,在通过主键去找聚集索引,最终才找到数据,如果主键是聚集索引的话,这些操作只需要一步。

      当然这也只是本人的分析,不一定正确。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值