按估计的操作员成本对执行计划 XML 进行排序

xpt*_*xpt 1 sql-server execution-plan

我想按Estimated Operator Cost对执行计划 XML 进行排序,但问题是:

\n

SQL Server 执行计划在 UI 中具有“估计操作员成本”条目:

\n

在此输入图像描述

\n

...但是 XML 输出中缺少该值。

\n

关于如何对 XML 进行排序有多种建议,例如:

\n\n

但两者都与我所拥有的相差甚远,因为“估计运营商成本”似乎是一个超级复杂的计算

\n

请问这个问题有什么解决办法吗?

\n

Eri*_*ing 7

没有

我不确定您为什么要这样做,因为成本始终是估计值,并且就查询中最耗时的部分而言很容易出错。

此时,成本被认为是一个无单位的度量——您可能会在旅行中遇到短语“查询成本”——即使在实际的查询计划中也没有“实际成本”。

如果您的计划是在计划缓存中挖掘相对昂贵的运算符,那么更好的选择是按更有用的指标(例如平均 cpu )对计划进行排序。这至少让您了解运行了很长时间的内容。

如果您只想检查一个查询,那么最好的选择是获取实际的执行计划并查看操作员时间以找出哪个部分运行缓慢。

对于较大的存储过程来说,这可能会很烦人,使用扩展事件可能更容易观察,或者如果您知道哪些存储过程运行不佳,则只需查看特定查询的计划。