我正在学习如何阅读SQL Server中的实际执行计划。我注意到SQL Server倾向于将物理查询计划中使用的中间值表示为expr1006expr1007等(即expr后跟数字)。

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

sql - 如何找出由SQL Server执行计划中使用的中间值表示的内容-LMLPHP

有可能找出它们真正代表什么?

最佳答案

右键单击计算标量,然后选择“属性”。

查看“定义的值”部分。

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

sql - 如何找出由SQL Server执行计划中使用的中间值表示的内容-LMLPHP

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

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

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

10-07 21:20