包含另一个索引的所有列的多列索引

时间:2017-05-05 20:58:08

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

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

2 个答案:

答案 0 :(得分:1)

不,没有必要保留第一个索引。

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

我可以补充一下。 。 。有两个列的索引有一个非常微小的好处,有些数据库甚至可以利用:索引更小。因此,如果您受内存限制(数据与可用内存相比确实很大),那么您可能会遇到一些情况,其中2列索引可以适合内存,但较大的索引则不适合。我认为这是一个特殊的边缘案例,在实践中不太可能。

答案 1 :(得分:1)

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

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