改善不良的间歇性SQL查询性能

时间:2013-04-05 15:43:07

标签: sql sql-server tsql query-performance

我有一个中等复杂的嵌套T-SQL查询,在大多数情况下都有良好的性能,除了我每个2周付费期的开始(要处理的记录较少!)查询陷入困境数量级更慢。然后在两周一段时间的某个时刻,SQL Server(2008)确定执行计划应该改变,一切都恢复到正常速度。我有“好”和“坏”场景的执行计划,但我在这个领域是一个n00b,我不知道如何解释它们。这下我的下一步是什么?发布查询?执行计划?阅读一些文章/书?

2 个答案:

答案 0 :(得分:1)

尝试在2周时段开始时更新查询中表格的统计信息:

DBCC UPDATE STATISTICS表名

有一些选项,比如你可以尝试的WITH FULLSCAN。请查看SQL Server文档。

答案 1 :(得分:1)

我在answers.sqlperformance.com上得到了一些帮助,虽然UPDATE STATISTICS <table>确实有帮助,但它似乎掩盖了真正的问题。当我应该使用(SELECT COUNT(*) ...) = 0时,我正在使用构造(SELECT * ...) IS NULLNOT EXISTS (SELECT * ...)。改变这些导致在所有情况下几乎提高了一个数量级。看起来SQL Plan Optimizer在这种情况下能够更好地工作。