SQL Server 索引下降 - 注意事项

Min*_*ick 7 index sql-server index-tuning

我一直在做一些索引使用审查(使用 DMV 搜索、扫描和查找统计),并在我们最大和最繁忙的数据库中确定了许多“未使用”的索引。我对这个论坛关于在执行索引 DROP 之前应该评估哪些检查或确认以外的检查或确认的意见很感兴趣。立即想到的是索引是否用于强制执行必要的唯一约束。还有哪些重要的因素需要考虑?

Low*_*n M 8

如果有一个聪明的人决定在他们的应用程序的查询中使用索引提示,如果/当它运行时删除所述索引将导致查询完全失败。

诸如季度或年终报告之类的内容可能不会显示任何索引使用情况,因为它的执行频率不高,具体取决于系统重新启动的频率。


Ste*_*o64 5

如果您不确定您是否有可能使用索引的定期报告或正在运行的作业,您最好禁用该索引而不是删除它,因为如果您发现它毕竟是必需的,那么您就拥有了原位定义。

  ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee DISABLE;
Run Code Online (Sandbox Code Playgroud)

ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee REBUILD;
Run Code Online (Sandbox Code Playgroud)

如果您发现索引毕竟是需要的


小智 2

如果索引不强制唯一性,则它仅用于(可能)协助读取访问。我只是警告不要删除可能用于季末/年末报告作业的索引,这些索引是为了避免长时间锁定表而创建的。您必须使用一些判断和表格知识来确定这一点,或者等到您收集了足够的信息才能确定。