如何解决多重索引个性:边界重复键
我正在运行 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,DATA_COMPRESSION=?);
如您所见,它们看起来很相似。我的问题是删除第一个索引 SportID 但保留双索引 (SportId,TextId) 是否有害。
解决方法
第一个索引 IX_Test 是冗余的,因为它的第一个最具选择性的列被索引 IX_Test_2 复制。
这两个索引都可以满足按键或范围查找特定行的 SportId,第二个索引还包括一个额外的列,因此涵盖了需要两者或按 AnotherId 排序的查询。
在没有第一个索引的情况下,优化器可以同样好地利用第二个索引,并且添加单个 int 列,同时使索引稍微更宽,将可以忽略不计,并且被减少的开销所抵消保持两者。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。