dm_exec_query_stats


dm_exec_query_statsはキャッシュされたSQLの集計パフォーマンス統計を取得できる動的管理ビューです。
以下はdm_exec_query_statsを利用してキャッシュされたSQLの中で実行時間が遅いものを取得するSQL例です。

SELECT TOP 100
   SUBSTRING(text, (statement_start_offset / 2) + 1, 
        ((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(text)
          ELSE statement_end_offset
          END - statement_start_offset) / 2) + 1) AS sqltext
 , total_elapsed_time / execution_count / 1000.0 AS [平均実行時間(ミリ秒)]
 , total_worker_time  / execution_count / 1000.0 AS [平均CPU 時間(ミリ秒)]
 , total_physical_reads / execution_count AS [平均物理I/O 数]
 , (total_logical_reads + total_logical_writes)
                        / execution_count AS [平均論理I/O 数]
 , execution_count AS 実行回数
FROM
 sys.dm_exec_query_stats
  CROSS APPLY sys.dm_exec_sql_text(sql_handle)
ORDER BY 2 DESC

上記のSQLではdm_exec_query_statsの他にsqltextを取得するため
dm_exec_sql_textという動的関数を使用しています。



動作確認環境:SQL Server 2008 Express