I/O 数の多いクエリ TOP 100(dm_exec_query_stats)
TechEd 2009 での私のシアターセッション「SQL Server 動的管理ビュー再入門」で紹介した「I/O 数の多いクエリ TOP 100」を取得できるスクリプトです。DMV(動的管理ビュー)の dm_exec_query_stats と、動的管理関数(DMF)の dm_exec_sql_text を利用しています。
SELECT TOP 100 total_physical_reads / execution_count AS [平均物理I/O 数] , (total_logical_reads + total_logical_writes) / execution_count AS [平均論理I/O 数] , total_elapsed_time / execution_count / 1000.0 AS [平均実行時間(ミリ秒)] , total_worker_time / execution_count / 1000.0 AS [平均CPU 時間(ミリ秒)] , 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 FROM sys.dm_exec_query_stats CROSS APPLY sys.dm_exec_sql_text(sql_handle) ORDER BY 1 DESC, 2 DESC