聚集索引列上的非聚簇索引可提高性能?

时间:2008-09-03 16:05:07

标签: sql-server indexing

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

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

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:2)

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

答案 2 :(得分:-1)

聚簇索引通常会更快,但您只能拥有1个聚簇索引。因此,如果表已经在另一列上聚集索引,那么非聚集索引是您可以做的最好的。