SQL聚集索引和非聚集索引的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL聚集索引和⾮聚集索引的区别
两者的根本区别是表记录的排列顺序和与索引的排列顺序是否⼀致。

1.聚集索引⼀个表只能有⼀个,⽽⾮聚集索引⼀个表可以存在多个。

2.聚集索引存储记录是物理上连续存在,⽽⾮聚集索引是逻辑上的连续,物理存储并不连续。

3.聚集索引查询数据速度快,插⼊数据速度慢;⾮聚集索引反之。

聚集索引表记录的排列顺序与索引的排列顺序⼀致,优点是查询速度快,因为⼀旦具有第⼀个索引值的纪录被找到,具有连续索引值的记录也⼀定物理的紧跟其后。

聚集索引的缺点是对表进⾏修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序⼀致,⽽把记录插⼊到数据页的相应位置,必须在数据页中进⾏数据重排,降低了执⾏速度。

⾮聚集索引指定了表中记录的逻辑顺序,但记录的物理顺序和索引的顺序不⼀致,聚集索引和⾮聚集索引都采⽤了B+树的结构,但⾮聚集索引的叶⼦层并不与实际的数据页相重叠,⽽采⽤叶⼦层包含⼀个指向表中的记录在数据页中的指针的⽅式。

⾮聚集索引⽐聚集索引层次多,添加记录不会引起数据顺序的重组。

聚集索引:物理存储按照索引排序
⾮聚集索引:物理存储不按照索引排序
聚集索引在插⼊数据时速度要慢(时间花费在“物理存储的排序”上,也就是⾸先要找到位置然后插⼊),但查询数据⽐⾮聚集数据的速度快
聚集索引:该索引中键值的逻辑顺序决定了表中相应⾏的物理顺序。

聚集索引确定表中数据的物理顺序。

聚集索引类似于电话簿,后者按姓⽒排列数据。

由于聚集索引规定数据在表中的物理存储顺序,因此⼀个表只能包含⼀个聚集索引。

但该索引可以包含多个列(组合索引),就像电话簿按姓⽒和名字进⾏组织⼀样。

聚集索引使⽤注意事项
定义聚集索引键时使⽤的列越少越好。

包含⼤量⾮重复值的列。

使⽤下列运算符返回⼀个范围值的查询:BETWEEN、>、>=、< 和 <=。

被连续访问的列。

返回⼤型结果集的查询。

经常被使⽤联接或 GROUP BY ⼦句的查询访问的列;⼀般来说,这些是外键列。

对 ORDER BY 或 GROUP BY ⼦句中指定的列进⾏索引,可以使 SQL Server 不必对数据进⾏排序,因为这些⾏已经排序。

这样可以提⾼查询性能。

OLTP 类型的应⽤程序,这些程序要求进⾏⾮常快速的单⾏查找(⼀般通过主键)。

应在主键上创建聚集索引。

聚集索引不适⽤于:
频繁更改的列。

这将导致整⾏移动(因为 SQL Server 必须按物理顺序保留⾏中的数据值)。

这⼀点要特别注意,因为在⼤数据量事务处理系统中数据是易失的。

宽键。

来⾃聚集索引的键值由所有⾮聚集索引作为查找键使⽤,因此存储在每个⾮聚集索引的叶条⽬内。

⾮聚集索引:数据存储在⼀个地⽅,索引存储在另⼀个地⽅,索引带有指针指向数据的存储位置。

⾮聚集索引中的项⽬按索引键值的顺序存储,⽽表中的信息按另⼀种顺序存储(这可以由聚集索引规定)。

对于⾮聚集索引,可以为在表⾮聚集索引中查找数据时常⽤的每个列创建⼀个⾮聚集索引。

有些书籍包含多个索引。

例如,⼀本介绍园艺的书可能会包含⼀个植物通俗名称索引,和⼀个植物学名索引,因为这是读者查找信息的两种最常⽤的⽅法。

相关文档
最新文档