【问题标题】:Multi Column index containing all columns of another index包含另一个索引的所有列的多列索引
【发布时间】:2026-02-03 13:55:01
【问题描述】:

如果我有一个多列索引 - 包含 2 列,我创建一个包含这 2 列的第二个索引(作为第 2 个 - 相同的顺序)加上一个额外的第 3 列。是否需要只保留 2 列的第一个索引?

【问题讨论】:

    标签: sql indexing multiple-columns clustered-index non-clustered-index


    【解决方案1】:

    如果两列的顺序相同(在前两个位置上),那么保留初始索引是没有意义的。它很可能会停止使用。

    顺便说一句,您可以将它们都保留一段时间并构建查询以不时检查sys.dm_db_index_usage_stats 表以确认这一点...

    【讨论】:

      【解决方案2】:

      不,不需要保留第一个索引。

      我应该强调列的顺序很重要。因此,这仅适用于两个索引中的列以相同顺序以相同列开头的情况。

      我可能会添加 . . .具有两列的索引有一个非常微小的好处,一些数据库甚至可以利用:索引更小。因此,如果您受内存限制(与可用内存相比,数据确实很大),那么您可能会遇到一些情况,即 2 列索引可以放入内存但较大的索引不能。我认为这是一个特殊的极端情况,在实践中不太可能。

      【讨论】: