【问题标题】:Non-Clustered Index on a Clustered Index column improves performance?聚集索引列上的非聚集索引提高了性能?
【发布时间】:2023-03-23 08:59:02
【问题描述】:

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

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

【问题讨论】:

    标签: sql-server indexing sql-server-2005


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        聚集索引包含表的所有数据,而非聚集索引只有列 + 聚集索引的位置或行(如果它位于堆上)(没有聚集索引的表)。因此,如果您执行计数(列)并且该列使用非聚集索引编制索引,SQL 服务器只需扫描比聚集索引更快的非聚集索引,因为更多将适合 8K 页

        【讨论】:

          猜你喜欢
          • 2011-10-12
          • 2012-04-30
          • 1970-01-01
          • 2011-01-26
          • 2011-07-02
          • 1970-01-01
          • 2012-08-26
          • 2011-03-24
          • 2013-08-07
          相关资源
          最近更新 更多