从给定查询的缓存计划中获取查询计划时的缓慢

时间:2017-07-31 16:30:58

标签: sql sql-server sql-server-2016

我尝试通过运行此SELECT从查询计划缓存中获取参数化查询的查询计划:

SELECT qp.query_plan AS QueryPlan FROM sys.dm_exec_cached_plans AS cp 
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp 
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st 
where st.TEXT = '(@p00 NVarChar(4000),@p10 NVarChar(4000),@p20 NVarChar(4000),@p30 NVarChar(4000),@p40 NVarChar(4000),@p50 NVarChar(4000),@p60 NVarChar(4000),@p70 NVarChar(4000),@p80 NVarChar(4000),@p90 NVarChar(4000))(SELECT DISTINCT [MyTable].[PROFILEID] FROM [MyTable]...[ETC]'

我为上面的查询做了COUNT(*),它返回了5k个条目。

如果我在SQL Management Studio中运行一次查询,则返回结果大约需要5秒钟。 如果我并行运行多次(例如10次)它会变慢并且需要15-20秒才能完成。

任何想法为什么这个查询如此缓慢,我该如何改进它?

0 个答案:

没有答案
相关问题