これはあなたの累積パフォーマンスデータとキャッシュされた文ごとの実行カウントを与える
DECLARE @procname VARCHAR(255)
SET @procname = 'your proc name'
SELECT * FROM sys.dm_exec_query_stats WHERE st.objectid = OBJECT_ID(@procname)
DMV dm_exec_query_stats
で詳細なパフォーマンス情報がたくさんあります。
DBCC FREEPROCCACHE
を使用すると、カウンターをリセットできます(キャッシュされたすべてのクエリプランをパージするため、運用システムでは実行しないでください)。
あなたはこのクエリを拡張することで、各ステートメントのクエリプランを取得することができます。
SELECT SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) [sub_statement]
,*, CONVERT(XML, tqp.query_plan)
FROM sys.dm_exec_query_stats qs CROSS APPLY
sys.dm_exec_sql_text(sql_handle) st CROSS APPLY
sys.dm_exec_query_plan(plan_handle) qp CROSS APPLY
sys.dm_exec_text_query_plan(plan_handle, statement_start_offset, statement_end_offset ) tqp
WHERE st.objectid = OBJECT_ID(@procname)
ORDER BY statement_start_offset, execution_count
これはあなたのSPの部分がひどく実行されているかについてのポインタを与える、となります - あなたが実行計画が含まれている場合 - なぜ。
うん、IO、CPU、Durationなどをキャプチャする – gbn
「クライアントの統計情報を含める」オプションも非常に役に立ちます。私はそれとプロファイラを使用します。ありがとう。 :) –
SSMSに「クライアント統計を含める」ことは知らなかった。とても役に立ちました。 – kolin