SQLServerでSQLの実行速度を計測する

データベースSQLServer,データベース

記事内に広告が含まれています。

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で実行速度を計測する方法のご紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ