【发布时间】:2021-07-13 20:03:52
【问题描述】:
我正在从 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) 是否有害。
我最好的方法是什么?
【问题讨论】:
-
保留第二个索引是有道理的,第一个索引可能会被某些查询选择,因为它稍微窄一些,但添加可能是单个 int 列应该无关紧要。检查
sys.dm_db_index_usage_stats以了解每个当前的使用情况。 -
我建议删除第一个索引。第二个是多余的。
-
你能回答并说明为什么它是多余的吗?
标签: sql sql-server database indexing non-clustered-index