【发布时间】:2023-03-23 08:59:02
【问题描述】:
在 SQL Server 2005 中,查询分析器多次告诉我要在已具有聚集索引的表的主 ID 列上创建非聚集索引。遵循此建议后,查询执行计划报告查询应该更快。
为什么同一列(具有相同排序顺序)上的非聚集索引比聚集索引更快?
【问题讨论】:
标签: sql-server indexing sql-server-2005
在 SQL Server 2005 中,查询分析器多次告诉我要在已具有聚集索引的表的主 ID 列上创建非聚集索引。遵循此建议后,查询执行计划报告查询应该更快。
为什么同一列(具有相同排序顺序)上的非聚集索引比聚集索引更快?
【问题讨论】:
标签: sql-server indexing sql-server-2005
聚集索引通常会更快,但您只能有 1 个聚集索引。因此,如果表已经在不同的列上有一个聚集索引,那么最好使用非聚集索引。
【讨论】:
我猜在您不需要完整行数据的情况下它会更快,例如,如果您只是检查具有给定 ID 的行是否确实存在。那么聚集索引会相当大,而小的“一列”索引会更苗条。
【讨论】:
聚集索引包含表的所有数据,而非聚集索引只有列 + 聚集索引的位置或行(如果它位于堆上)(没有聚集索引的表)。因此,如果您执行计数(列)并且该列使用非聚集索引编制索引,SQL 服务器只需扫描比聚集索引更快的非聚集索引,因为更多将适合 8K 页
【讨论】: