我有一个中等复杂的嵌套T-SQL查询,它的大部分性能都很好,除了在我的每个两周支付期开始时(需要处理的记录更少!)查询速度慢了几个数量级。然后,在双周期间的某个时候,SQL Server (2008)确定执行计划应该更改,一切都恢复到正常速度。我有“好”和“坏”场景的执行计划,但我是这个领域的n00b,我不知道如何解释它们。我在这里的下一步是什么?是否发布查询?行刑计划?读一些文章/书?
发布于 2013-05-09 21:22:28
我在answers.sqlperformance.com得到了一些帮助,虽然UPDATE STATISTICS <table>确实提供了帮助,但它似乎掩盖了真正的问题。我使用的是(SELECT COUNT(*) ...) = 0和(SELECT * ...) IS NULL结构,而我本应该使用NOT EXISTS (SELECT * ...)。在所有情况下,改变这些几乎都会带来另一个数量级的改善。看起来SQL计划优化器在这种情况下能够更好地工作。
发布于 2013-04-05 23:54:55
尝试在2周期间开始时更新查询中表的统计信息:
DBCC更新统计表名
还有一些选项,比如FULLSCAN,你也可以尝试一下。请查看SQL Server文档。
https://stackoverflow.com/questions/15838092
复制相似问题