zoukankan      html  css  js  c++  java
  • SqlServer为什么自动在主键上建立聚集索引

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

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

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

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

  • 相关阅读:
    2018 ICPC 徐州网络赛
    2018 CCPC网络赛
    2013 NEERC
    2015 Dhaka
    2018ICPC南京网络赛
    Codeforces Round #505
    Codeforces Round #504 E. Down or Right
    Codeforces Round #504 D. Array Restoration
    2018 Multi-University Training Contest 3
    2018 Multi-University Training Contest 2
  • 原文地址:https://www.cnblogs.com/gezifeiyang/p/2221644.html
Copyright © 2011-2022 走看看