【问题标题】:Clustered Index or Non clustered index on non primary key column?非主键列上的聚集索引或非聚集索引?
【发布时间】:2011-02-15 20:06:31
【问题描述】:

在我的情况下,我有一个使用标识列作为主键的表(很多表)。它们还将包含一个唯一的 int 列 RecordID。 90% 的时间 RecordID 将用于搜索记录。 ID 标识列存在的唯一原因是为了在我们的系统中保持一致。在这种情况下,我应该从 ID 列中删除聚集索引并将其添加到 RecordID 列吗?然后在主键 ID 中添加一个非聚集索引,在极少数情况下它将用于获取记录。谢谢!!

【问题讨论】:

    标签: sql indexing


    【解决方案1】:

    如果您的查询是对 RecordID 的单例搜索(即WHERE RecordID=...),那么我不会更改它。确实,它上的聚集索引会更快,但只有在真正非常热门的情况下才会引人注目。

    如果您有范围查询(BETWEEN<>),我会考虑进行更改。范围扫描可以更显着地从聚集索引中受益,因为非聚集索引可能受制于index tipping point

    要考虑的另一件事是,如果您有可以通过此聚集索引满足的排序要求(查询中的 ORDER BY,或 GROUP BY,或 ranking functions,如带有 ORDER by 子句的 ROW_NUMBER)。聚集索引会更好地帮助这些。

    【讨论】:

      猜你喜欢
      • 2013-12-02
      • 1970-01-01
      • 2013-08-07
      • 2012-08-26
      • 2011-05-15
      • 2021-09-07
      • 2011-08-21
      • 2012-12-30
      相关资源
      最近更新 更多