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