多重索引特性:边缘重复键

Multiple Index Personalities: Borderline duplicate keys

我是来自 Brent Ozar 的 运行 sp_BlitzIndex,我得到了一些这样的物品。

Multiple Index Personalities: Borderline duplicate keys

我不是 100% 知道该怎么做,但下面是一个例子。

CREATE INDEX [IX_Test] ON [Test] ( [SportId] ) WITH (FILLFACTOR=100, ONLINE=?, SORT_IN_TEMPDB=?, DATA_COMPRESSION=?);

CREATE UNIQUE INDEX [IX_Test_2] ON [Test] ( [SportId], [AnotherId] ) WITH (FILLFACTOR=100, ONLINE=?, SORT_IN_TEMPDB=?, DATA_COMPRESSION=?);

如您所见,它们看起来很相似。我的问题是删除第一个索引 SportID 但保留双重索引(SportId,TextId)是否有伤害。

我最好的方法是什么?

第一个索引 IX_Test 是冗余的,因为它的第一个、最具选择性的列被索引 IX_Test_2 复制。

这两个索引都可以满足按键或范围查找 SportId 的特定行,第二个索引还包含一个附加列,因此涵盖了需要这两个索引或按 AnotherId 排序的查询。

在没有第一个索引的情况下,优化器可以同样很好地利用第二个索引,并且添加单个 int 列,同时使索引稍微变宽,可以忽略不计,并且可以通过减少的开销来抵消必须同时维护两者。