SQLServerでSQLの実行速度を計測する
SQLServerで実行速度を計測する方法をご紹介します。
コーディング例
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS; DBCC FREEPROCCACHE WITH NO_INFOMSGS; CREATE TABLE WRK_TBL( Column1 INT ); SET STATISTICS TIME ON; WITH TBL AS ( SELECT 1 AS Column1 UNION ALL SELECT Column1 + 1 FROM TBL WHERE Column1 < 100000 ) INSERT INTO WRK_TBL SELECT * FROM TBL OPTION(MAXRECURSION 0); SET STATISTICS TIME OFF; DROP TABLE WRK_TBL;
実行結果
SQL Server の構文解析とコンパイルの時間: CPU 時間 = 0 ミリ秒、経過時間 = 1 ミリ秒。 SQL Server 実行時間: 、CPU 時間 = 2234 ミリ秒、経過時間 = 2362 ミリ秒。 (100000 行処理されました)
1~2行目の「DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS」、「DBCC FREEPROCCACHE WITH NO_INFOMSGS」により、キャッシュされたデータをクリアします。
「WITH NO_INFOMSGS」はコマンド実行時のメッセージを表示しないようにします。
SQLは一度実行するとキャッシュされるので、2回目以降は実行速度が速くなってしまいます。
SQLの実行速度を計測する場合はキャッシュを削除してから実行することで、純粋なSQLの速度が計測できます。
8行目の「SET STATISTICS TIME ON」で、それ以降に実行するSQLの実行速度を表示するようにします。
26行目の「SET STATISTICS TIME OFF」で、SQLの実行速度を表示しないようにします。
以上、SQLServerで実行速度を計測する方法のご紹介でした。