【发布时间】:2019-09-12 04:00:35
【问题描述】:
在观看了 Brent Ozar 关于查询调优的视频并看到索引调优博客和文章之间达成一致后,我将 SQL Server 实例上的并行阈值成本从 5(默认)提高到 20。因此,查询开始失败有超时错误。
因此,我开始调查其中一个查询。而且,我可以看到,当成本阈值为 5 时,查询需要 11 秒才能运行,但是当成本阈值增加到 20 时,执行计划会发生变化,相同的查询需要 8 分钟以上才能运行。
其中一个区别是,在长时间运行的执行计划中(成本阈值为 20),Table Spool 后面的箭头变得很粗,当我将鼠标悬停在它上面时,它可以看到读取的行数为 1,686,216,987 .而在短期运行的执行计划(成本阈值 5)中,同一个 table spool 后面的箭头更窄,读取的行数为 27769。
在长期运行的执行计划中,我没有看到任何并行化。
任何想法如何提高成本阈值可能会使逻辑读取通过屋顶?
【问题讨论】:
-
确保唯一改变的是两个计划之间从 5 到 20 的阈值(而不是统计数据或可能影响它的任何其他内容)。并尝试使用brentozar.com/pastetheplan 发布这两个计划
-
我想显示查询计划,但它包含私人/机密信息。如果我有时间,我会尝试匿名发布。
-
如果问题没有迁移,您可以尝试在dba.stackexchange.com 上发帖。
标签: sql-server indexing query-performance