DMVを使って実行プランを確認してみる

SQL serverにてDMVを使って実行プランを確認してみる(SQLserver2008)

 

--ストアドプロシージャの実行状況の確認

SELECT TOP 30 d.object_id AS [OBID]
, d.database_id AS [DBID]
, s.name AS [オブジェクト名]
, d.execution_count AS [実行回数]
, d.max_elapsed_time /1000 AS [最大経過時間ミリ秒]
, d.total_elapsed_time/d.execution_count /1000 AS [平均経過時間ミリ秒]
, d.plan_handle [キャッシュに残っているPlanHandle]
--, d.cached_time AS [キャッシュに追加された時間]

FROM sys.procedures s
INNER JOIN sys.dm_exec_procedure_stats d
               ON s.object_id = d.object_id
ORDER BY [平均経過時間ミリ秒] DESC

 

 

これだとオブジェクトに紐づく実行プランのPlanHandleも引っ付いてくるので、あっこれちょいとハマり気味っていうSPの実行プランを以下で確認してみると色々と調べる事ができます。再起動(キャッシュクリアされると取得できないのでご注意を)

 

 

-- キャッシュ内の実行プランを確認する
select * from sys.dm_exec_query_plan(plan_handle)

 

 

plan_hundleはコピペで置き換えれば

以上、こんな方法もありますがいかがでしょうか?

結構この辺はサンプルありますので探してみてくださいね。