在 SQL Server 2005 中,查询分析器多次告诉我要在已经具有聚集索引的表的主 ID 列上创建非聚集索引。遵循此建议后,查询执行计划报告查询应该更快。
为什么同一列(具有相同排序顺序)上的非聚集索引比聚集索引更快?
在 SQL Server 2005 中,查询分析器多次告诉我要在已经具有聚集索引的表的主 ID 列上创建非聚集索引。遵循此建议后,查询执行计划报告查询应该更快。
为什么同一列(具有相同排序顺序)上的非聚集索引比聚集索引更快?
聚集索引具有表的所有数据,而非聚集索引仅具有列 + 聚集索引的位置或行(如果它位于堆上)(没有聚集索引的表)。因此,如果您执行 count(column) 并且该列使用非聚集索引编制索引,则 SQL 服务器只需扫描比聚集索引更快的非聚集索引,因为 8K 页可以容纳更多
我猜在不需要完整行数据的情况下它会更快,例如,如果您只是检查具有给定 ID 的行是否确实存在。然后一个聚集索引会相当大,而一个小的“一列”索引会更苗条。
聚集索引通常会更快,但您只能有 1 个聚集索引。因此,如果表已经在不同的列上有聚集索引,那么非聚集索引是您能做的最好的事情。