摘要:
下文讲述从sql引擎中获取缓存中带参数的执行计划的方法分享,如下所示:
实验环境:sql server 2008 R2
在sqlserver数据库中,我们经常听同事讲:
1.今天查询好慢好慢,当我们进入系统运行查询时,发现速度非常快(或我们把脚本放入查询分析器运行,速度也非常快)
2.这个查询有时候好慢,有时候好快这些疑惑时.
此时我们需获取缓存中的执行计划,然后对相关查询所涉及的执行计划进行分析诊断,达到对sql运行提速的方法,如下所示:
select b.[text] as [脚本信息] ,db_name(b.dbId) as [数据库名称] ,object_name(b.objectId) as [对象名称] ,d.query_Plan as [xml执行计划] ---双击可查看详细执行计划 ,a.creation_time as [创建时间] ,a.last_execution_time as [最后执行时间] FROM sys.dm_exec_query_stats a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b CROSS APPLY sys.dm_exec_text_query_plan(a.plan_handle, a.statement_start_offset, a.statement_end_offset) c CROSS APPLY sys.dm_exec_query_plan(a.plan_handle) d WHERE b.ENCRYPTED <> 1
注意事项:
在查询出来的结果上,双击相应的执行计划,查阅执行计划的相关信息