冗余类似的索引

时间:2016-06-23 08:38:56

标签: sql sql-server database

我正在清理包含大量索引的数据库(SQL Server 2012)。我相信有些可能会被删除或合并。

例如,我有 index1

CREATE NONCLUSTERED INDEX [index1] ON [dbo].[MyTable]
(
    [Project] ASC
)
INCLUDE (a_bunch_of _columns)

index2

CREATE NONCLUSTERED INDEX [index2] ON [dbo].[MyTable]
(
    [Project] ASC,
    [Type] ASC
)
INCLUDE (a_bunch_of _columns)

我在数据库统计数据中看到 index1 的用法远远超过 index2 ,但我相信 index1 中的所有信息都可以找到进入 index2 。因此,如果删除 index1 ,数据库引擎将寻找 index2 而不是 index1 它现在如何做。表现应该和现在一样好。 (甚至更好一点,因为维护的索引会少一个)

这是正确的还是我遗失了什么?

1 个答案:

答案 0 :(得分:3)

假设“a_bunch_of_columns”是相同的(或者第二列的列是第一列的超集),那么你是对的。

第一个索引的唯一优势是它在内存中占用的空间更少。但是,与完全删除索引相比,这是一个非常非常微不足道的优势。