2008-09-03 85 views
8

在SQL Server 2005中,查询分析器多次告诉我在已经有聚簇索引的表的主ID列上创建非聚簇索引。遵循此建议后,查询执行计划报告查询应该更快。集群索引列上的非集群索引可提高性能?

为什么同一列(具有相同排序顺序)上的非聚簇索引比聚簇索引快?

回答

-1

聚集索引通常会更快,但只能有1个聚集索引。所以如果表已经有不同列上的聚簇索引,那么非聚簇索引是最好的。

2

我猜想在不需要全行数据的情况下会更快,例如,如果您只是检查具有给定ID的行是否存在。然后一个聚集索引将是相当巨大的,而一个小的“一列”索引将更加苗条。

16

聚簇索引具有该表的所有数据,而非聚簇索引只具有聚集索引的列+聚簇索引的位置,或者如果聚簇索引位于堆(没有聚簇索引的表)上,则该行具有该行。因此,如果您执行计数(列)并且该列使用非聚集索引进行索引,则SQL服务器只需扫描比聚簇索引快的非聚簇索引,因为更多数据将适合8K页面

相关问题