未使用的NONCLUSTERED INDEX仍然可以提高查询速度吗?


13

这是一种奇怪的情况,但我希望有人能回答。

在进行一些性能问题排查期间,我们按照的要求将NONCLUSTERED INDEX添加到了表中sp_BlitzIndex。第二天,我们检查了它的使用情况,结果显示0次读取0次扫描/搜索,0次单例查找),因此我们将其禁用。

在第二分钟,我们收到了抱怨应用程序缓慢(性能问题)的投诉,这是我们在添加INDEX时首先尝试检查并解决的问题。

现在,从理论上讲,这听起来纯属巧合。可证明,可衡量的是,未使用 INDEX 。禁用它不会导致查询性能下降。但它几乎TOO巧合。

因此,我的问题就很简单了:

它是在所有可能的,一个非聚集索引,其使用提供的统计(从动态管理视图/ sp_BlitzIndex)显示NO使用,还是已经帮助受影响的表以某种方式查询性能?


PS:请饶了我个谚语:“去测试吧!” 响应; 我必须等到明天进行测试,因为该表已被大量使用,并且直到每晚维护窗口才会重新启用(重建)索引。而且,性能问题的性质是零星的,而且无论如何都很难重现。我并不是说“不,我不会测试”,而是我知道我们必须测试并计划,但是我要的是理论和/或经验知识。
NateJ '16

1
您可能会发现此博客文章很有用;brentozar.com/archive/2016/11/...
富贝内

Answers:


13

是的,当SQL Server决定来自该索引的统计信息更加准确/有用并使用该统计信息进行估算并提出计划时,可以。

当SQL Server决定使用一个索引中的统计信息并扫描/搜索另一个索引时,我遇到了一些情况。

编辑-这可能不适用,因为我刚刚意识到您已禁用索引。我没有测试过这种情况。


感谢您清晰,简洁的回应!是的,它并没有立即被禁用,直到我在用户投诉/性能下降之前几秒钟将其禁用,它才被完全启用。您很好:)
NateJ '16

1
@NateJ可以CREATE STATISTICS代替验证该理论CREATE INDEX
雅各布·卡尼亚
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.