这是一个奇怪的情况,但我希望有人能给出答案。
在一些性能故障排除期间,我们按照 . 的要求向表中添加了一个 NONCLUSTERED INDEX sp_BlitzIndex
。第二天我们检查了它的使用情况,它显示了0 次读取(0 次扫描/搜索,0 次单例查找),因此我们禁用了它。
就在下一分钟,我们收到了与我们在添加 INDEX 时首先尝试检查和解决的相同应用程序缓慢(性能问题)的投诉。
现在,我知道理论上这听起来纯属巧合。INDEX 是可证明的、可测量的、未使用的。禁用它不应该导致查询性能下降。但这几乎是巧合。
问题
因此,我的问题很简单:
是否有可能,一个非聚集索引,其使用统计信息(来自 DMV/ sp_BlitzIndex
)显示没有使用,仍然以某种方式在受影响的表上帮助查询性能?
是的,当 SQL Server 决定来自该索引的统计信息更准确/有用并使用该统计信息进行估算并制定计划时,它可以。
我遇到过 SQL Server 决定使用来自一个索引的统计信息并扫描/寻找另一个索引的情况。
编辑 - 这可能不适用,因为我刚刚意识到您已禁用索引。我没有测试过这种情况。