-
聚集索引
表中储存的数据按照索引的顺序储存,检索效率比普通索引高,索引暂用硬盘存储空间小(1%左右),但对数据新增/修改/删除的速度影响较大(降低)。
特点:
无索引,数据无序。
有索引,数据和索引同序。
数据会根据索引键的顺序重新排列数据。
一个表只能有一个索引。
叶节点的指针指向的数据也在同一位置存储。
TSQL语法:create CLUSTERED INDEX idxempID ON emp(empID) -
非聚集索引
不影响表中的数据存储顺序,检索效率比聚集索引低,索引占用硬盘空间大(30%~40%),对数据新增/修改/删除的速度影响较少。
特点:
一个表可以最多创建249个非聚集索引。
先建聚集索引才能创建非聚集索引。
数据与非聚集索引在不同位置。
非聚集索引在叶节点上存储,在叶节点上有一个“指针”直接指向要查询的数据区域。
数据不会根据非聚集索引键的顺序重新排列数据。
TSQL语法:create NONCLUSTERED INDEX idximpID ON emp(empID) -
对于索引的错误观点:
主键就是聚集索引。
只要建立索引就能显著提高查询速度。
把所有需要提高查询速度的字段都加进聚集索引,以提高查询速度。 -
一般来说正确规则:
用聚集索引比用非聚集索引的主键速度快。
用聚集索引比用一般的主键做order by时速度快,特别是在小数据量情况下。
使用聚集索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚集索引使用了多少个。
本文转自cqtesting51CTO博客,原文链接: http://blog.51cto.com/cqtesting/1662316
,如需转载请自行联系原作者