通常,查询执行计划的总体成本与统计IOP一致。然而,我遇到了这样一种情况:一个不用节流CPU的计划显示它的成本低了6%,但是更昂贵的计划(使用OPTION (MAXDOP 1))的读取量明显减少,所需的时间也更少。我测试了第一次和最后一次查询的顺序,并继续获得相同的结果(即使独立运行)。
通过查询执行计划,no maxdop选项查询的速度要快6%,但是无论它是在MAXDOP 1查询上运行还是在最后一次运行,读取时间和时间都要长得多。
在查询执行计划显示一个计划比另一个整体小,但统计数字显示对较昂贵的计划读取更多且花费的时间更少的情况下,确定哪个方案更有效的最佳方法是什么?
只是一些数字:
计划一(无MAXDOP):通过执行计划减少6%的成本
计划2 OPTION (MAXDOP 1):每个Stats,较少的扫描,逻辑读取,涉及WorkTables;总体上减少2秒的时间。
发布于 2016-06-30 13:48:09
SQL server使用基于成本的优化模型。确切的成本将取决于行大小和分布信息,这将是上下文敏感和动态的。即使在实际的执行计划中,费用数字是根据估计数计算的。。
来自:成本估算简介
在最新版本的Server中,不应再将此成本解释为秒、毫秒或任何其他单位。
回到你的问题:
确定哪个更有效的最好方法是什么?
我以前依赖于statistics time and IO。我所做的任何更改,如创建索引、重写查询、使用查询提示、更新/创建统计信息等。我将测量CPU时间、读写时间。
因为我购买了Sentry的计划资源管理器PRO,所以我只使用它来比较计划的前后。
此外,您还可以获得“相同”查询的多个计划 --也可以检查SET选项、任何cAsE和空白或模式引用。
伟大的参考文献:
https://dba.stackexchange.com/questions/142671
复制相似问题