sqlserver缓存计划和得到的实际的执行计划一样吗?
还是跟预估的执行计划一样?
缓存计划
select *
from sys.dm_exec_cached_plans
cross apply sys.dm_exec_sql_text(plan_handle)
cross apply sys.dm_exec_query_plan(plan_handle)普通的预估执行计划和实际执行计划是在SSMS工具里通过点上面一排的按钮查询出来请高手解答!
还是跟预估的执行计划一样?
缓存计划
select *
from sys.dm_exec_cached_plans
cross apply sys.dm_exec_sql_text(plan_handle)
cross apply sys.dm_exec_query_plan(plan_handle)普通的预估执行计划和实际执行计划是在SSMS工具里通过点上面一排的按钮查询出来请高手解答!
http://msdn.microsoft.com/zh-cn/library/windowsazure/hh977104.aspxquery_plan
nvarchar(max)
包含使用 plan_handle 指定的查询执行计划的编译时显示计划表示形式。显示计划采用文本格式。为包含即席 Transact-SQL 语句、存储过程调用以及用户定义函数调用等内容的每个批处理生成一个计划。
此列可为空值。
http://msdn.microsoft.com/zh-CN/library/bb326654(v=sql.120).aspx
in a memory space known as the plan cache
倒是发现实际的里面有degree of palallelism。而缓存计划和预估计划里是都没有这个的
如果用SET STATISTICS XML ON的话,取到执行计划的同时,SQL文的返回的结果也会一并返回回来。
我只想要干净的实际执行计划XML。
所以很多时候需要看实际计划,所以还是想知道取实际执行计划的好方法。
所以很多时候需要看实际计划,所以还是想知道取实际执行计划的好方法。你想想如果有多个IF/ELSE,如果缓存存了,不就有很多个执行计划咯,而且你要查的时候也不现实啊,哪知道哪个对应哪个
有什么好办法取实际执行计划吗(不带返回结果)?