我有一个中等复杂的嵌套 T-SQL 查询,它在大多数情况下具有良好的性能,除了在我的每个 2 周支付期开始时(要处理的记录更少!)查询陷入了数量级慢点。然后在双周期间的某个时间点,SQL Server (2008) 确定执行计划应该改变并且一切都恢复到正常速度。我有“好”和“坏”场景的执行计划,但我是这方面的 n00b,我不知道如何解释它们。下一步对我来说是什么?发布查询?执行计划?阅读一些文章/书籍?
问问题
210 次
2 回答
1
尝试在 2 周开始时更新查询中表的统计信息:
DBCC UPDATE STATISTICS 表名
有一些选项,比如 WITH FULLSCAN 你也可以尝试。查看 SQL Server 文档。
于 2013-04-05T15:54:54.557 回答
1
我在 answers.sqlperformance.com 上得到了一些帮助,虽然UPDATE STATISTICS <table>
确实有帮助,但它似乎掩盖了真正的问题。我正在使用这些构造(SELECT COUNT(*) ...) = 0
,(SELECT * ...) IS NULL
我应该在什么时候使用NOT EXISTS (SELECT * ...)
. 在所有情况下,改变这些导致几乎另一个数量级的改进。看起来 SQL 计划优化器在这种情况下能够更好地工作。
于 2013-05-09T13:22:27.840 回答