聚集索引与非聚集索引


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

聚集索引:相当于字典中按拼音排序,在按拼音查时,目录中相应位置即是在正文中的位置,比如:正,郑,政在目录中是相连的,而在正文中也是在相近的页面中,按照目录的先后顺序排列着。
非聚集索引:相当于字典中按部首排序,在查询时,如:邓,郑,邱在目录中是在一起的,而在正文中三者是不在一块的,不按先后顺序排列。
即:聚集索引将记录作物理上的排序,非聚集索引做逻辑的排序。因数据在物理上的排序只有一种,故表中聚集索引最多有一个!
按聚集索引查找时,直接查正文,因为正文即是按聚集索引排列的。比如查:郑,这个字直接将字典翻到最后,到大致范围,再进一步翻阅即可。而非聚集索引则需要先查目录,再去找对应位置,速度当然会比聚集索引慢一些。
聚集索引直接查物理位置,而非聚集索引需要找到逻辑位置,再去查物理位置

注:1,SQL中主键就是一种聚集索引,但聚集索引并不一定是主键,因为它限定的列数据中可以包含重复,而主键则不可以。
2,索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,数据库就要做更多的工作,降低写入数据的速度。过多的索引甚至会导致索引碎片。

3,多个字段建立成一个索引时,若分开字段查询,那么用索引的起始列查询与用索引上的全部列查询速度是一样的,但若用索引的非起始列查询,那么索引不起作用。这使得:对于复合索引,起始列须是最经常使用的字段。