我有一个Index_01,它是INDEX_02的子集
CREATE NONCLUSTERED INDEX [Index01] ON [Tab1](
colA,colB,colC)
INCLUDE ( colD,colE,colF)
CREATE NONCLUSTERED INDEX [Index02] ON [Tab1](
colE,
colF,
colC,
colD,
colA,
colC)
INCLUDE (colB,colZ)
由于Index01是Index02的子集,我们可以删除Index01吗? Index_01和Index_02是否相同?
提前致谢。
答案 0 :(得分:0)
SQL Server根据定义索引的列构建B-Tree Plus。 Index01基于列colA,colB和colC构建。 Index02的B-Tree构建基于colE,colF,colC,colD,colA,colCT构建。它们是非常不同的索引。
即使Index01包含colD,colE,colF,这意味着当找到基于colA,colB,colC的匹配时,如果查询只需要在列colD,colE,colF中找到的数据,则SQL Server不需要更进一步,进入数据 - 它有索引中的信息,然后它可以返回。