如何找出SQL服务器执行计划中使用的中间值所代表的内容

How to find out what is represented by the intermediate value used in SQL Server execution plan

我正在学习如何读取 SQL 服务器中的实际执行计划。我注意到 SQL 服务器倾向于表示物理查询计划中使用的中间值,例如expr1006expr1007 等(即 expr 后跟一个数字)。

这是截图。请注意靠近底部的 output list 部分中列出的表达式 expr1006, expr1008, expr1009

是否可以找出它们真正代表什么?

右键单击计算标量并选择 "properties"。

查看 "Defined Values" 部分。

如果在此处计算 expr1006,您将看到类似 expr1006 = SomeExpression() 的内容。可能定义了多个表达式。

否则沿着树向树叶方向移动,找到 expr1006 出现的第一个位置,然后查看该运算符的属性。

对于大型计划,查看 XML 并搜索 expr1006 是查看表达式定义位置的最快方法。

以上通常就足够了。 SQL 服务器的较新版本允许您使用 query_trace_column_values 扩展事件实际查看这些表达式的值。 More information about that here