我们支持基于 SQL Server 的内部应用程序的多种部署。
我们现在遇到过几次问题,一些曾经快速而小的查询突然变得非常缓慢或不稳定,而不一定会产生更多的数据或在更大的数据集上运行。
每次发生这种情况时,都是突然开始缓慢运行的不同查询。每当这种情况发生时,我们必须花一些开发时间来调试问题,可能会再次编写查询并与以前的版本进行基准测试等等。 然而,原始查询通常可以正常工作多年,而且我们事先没有迹象表明它的执行时间可能会爆炸。
有哪些好的做法可以防止查询随机变慢?
我所追求的不是“如何修复我们已经观察到很慢的查询”,而是首先如何降低查询变慢的可能性——一种主动的方法,而不是被动的。我需要一种方法来强制 SQL Server 不要尝试过多地优化查询:我真的不需要快速,我需要一致。如果有一些选择让 SQL Server 在构建查询计划时更加保守,而不是试图利用数据分布等,我会追求它们。