聚集索引和非聚集索引的区别有哪些

如题所述

聚集索引:其中行的物理排序与索引排序相同,并且聚集索引的最低一级(叶级)包含实际的数据行。一个表或视图只允许同时有一个聚集索引。 在创建任何非聚集索引之前创建聚集索引。创建聚集索引时重建表上现有的非聚集索引。 如果没有指定 CLUSTERED,则创建非聚集索引。 1、聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后。聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。建议使用聚集索引的场合为:   a.此列包含有限数目的不同值;   b.查询的结果返回一个区间的值;   c.查询的结果返回某值相同的大量结果集。   非聚集索引指定了表中记录的逻辑顺序,但记录的物理顺序和索引的顺序不一致,聚集索引和非聚集索引都采用了B+树的结构,但非聚集索引的叶子层并不与实际的数据页相重叠,而采用叶子层包含一个指向表中的记录在数据页中的指针的方式。非聚集索引比聚集索引层次多,添加记录不会引起数据顺序的重组。建议使用非聚集索引的场合为:   a.此列包含了大量数目不同的值;   b.查询的结束返回的是少量的结果集;   c.order by 子句中使用了该列。 2、聚集索引:其中行的物理排序与索引排序相同,并且聚集索引的最低一级(叶级)包含实际的数据行。一个表或视图只允许同时有一个聚集索引。 在创建任何非聚集索引之前创建聚集索引。创建聚集索引时重建表上现有的非聚集索引。 如果没有指定 CLUSTERED,则创建非聚集索引。 3、--不用索引查询 SELECT * FROM IndexTestTable WHIT(INDEX(0)) WHERE Status= 'B ' --创建聚集索引
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网