10

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

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

4

3 回答 3

16

聚集索引具有表的所有数据,而非聚集索引仅具有列 + 聚集索引的位置或行(如果它位于堆上)(没有聚集索引的表)。因此,如果您执行 count(column) 并且该列使用非聚集索引编制索引,则 SQL 服务器只需扫描比聚集索引更快的非聚集索引,因为 8K 页可以容纳更多

于 2008-09-03T16:35:22.220 回答
2

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

于 2008-09-03T16:29:30.550 回答
-1

聚集索引通常会更快,但您只能有 1 个聚集索引。因此,如果表已经在不同的列上有聚集索引,那么非聚集索引是您能做的最好的事情。

于 2008-09-03T16:28:33.360 回答