Sql-Server

重疊索引

  • October 31, 2014

我的一個數據庫上有兩個非聚集索引,它們的定義是:

CREATE NONCLUSTERED INDEX [NC_Index1] ON [dbo].[anyTable]
(
   [X] ASC,
   [Y] ASC,
   [Z] ASC
)
INCLUDE (A  ,
        B,
        C) 

CREATE NONCLUSTERED INDEX [NC_Index2] ON [dbo].[anyTable]
(
   [X] ASC,
   [Y] ASC,
   [Z] ASC,
   [colm1] ASC,
   [C] ASC
)
INCLUDE (A,
        colm2,
        colm3,
        colm4,
        colm5          
) 

我只是想知道是否可以通過更改第二個索引的定義來將這兩個非聚集索引合併為一個索引,方法是添加 B 列以包含第二個索引的列,例如:

CREATE NONCLUSTERED INDEX [NC_Index2] ON [dbo].[anyTable]
(
   [X] ASC,
   [Y] ASC,
   [Z] ASC,
   [colm1] ASC,
   [C] ASC
)
INCLUDE (A,
        B
        colm2,
        colm3,
        colm4,
        colm5          
) 

另外,包含列的順序是否重要?

謝謝大家。

是的,正如 ypercube 已經說過的那樣。

唯一需要注意的是列實際數據大小的巨大差異。例如,如果 NC_Index1 大約為 1Mb,而 NC_Index2 為 200GB,那麼您可能會引入一些潛在的掃描性能問題。但是,坦率地說,這種情況的可能性基本上是 0。或 NULL,這取決於您的偏好。

引用自:https://dba.stackexchange.com/questions/81577