【发布时间】:2018-04-02 09:57:53
【问题描述】:
我正在使用以下查询从 SQL Server 数据库中获取查询计划:
SELECT st.text as parameterized_query,[qp].[query_plan]
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st
CROSS APPLY sys.dm_exec_query_plan ( cp.plan_handle ) qp
-
我发现如果我在查询中使用
DECLARE和SET,那么:1.1。
parameterized_query类似于:DECLARE @p1 INT; SET @p1 = 1; SELECT * FROM a WHERE ID > @p11.2。
query_plan不包含<ParameterList>标签。 -
在其他一些情况下(我不明白):
2.1。
parameterized_query类似于:(@p1 INT)SELECT * FROM a WHERE ID > @p12.2。
query_plan包含<ParameterList>标签。
情况2什么时候发生?
【问题讨论】:
-
应用程序发生的第二种情况是将变量绑定到参数(类似于将参数传递给存储过程)。
标签: sql-server sql-execution-plan