SQL Serverでクエリやストアドプロシージャの実行時間を計測する

クエリやストアドプロシージャで時間がかかっている箇所を特定するために時間を計測するサンプルです。

サンプルコード

次のサンプルでは、検索処理と集計処理を100回実行し、それぞれの実行時間を表示しています。
DECLARE  @TimeStart         DATETIME    --計測開始時刻を保持
        ,@Time検索時間      DATETIME    --計測時間
        ,@Time集計時間      DATETIME    --計測時間
        ,@count             INTEGER
        ,@TempCount         INTEGER
        ,@TempValue         VARCHAR(100)


--初期化
SET @Time検索時間   = '1900-01-01 00:00:00.000'
SET @Time集計時間   = '1900-01-01 00:00:00.000'
SET @count          = 0

--ループ
WHILE(@count < 100) BEGIN
    SET @count += 1

    -------------------------------------
    --検索処理
    -------------------------------------
    --計測開始
    SET @TimeStart  =   GETDATE()

    --検索
    SELECT  @TempValue = 'value'
        FROM    sys.objects

    --計測終了
    SET @Time検索時間 += (GETDATE() - @TimeStart)

    -------------------------------------
    --集計処理
    -------------------------------------
    --計測開始
    SET @TimeStart  =   GETDATE()

    --集計
    SELECT  @TempCount  =   count(*)
        FROM    sys.objects

    --計測終了
    SET @Time集計時間 += (GETDATE() - @TimeStart)
END

-------------------------------------
--計測結果表示
-------------------------------------
SELECT   FORMAT(@Time検索時間,'mm:ss.fff') AS 検索時間
        ,FORMAT(@Time集計時間,'mm:ss.fff') AS 集計時間
        ,FORMAT(@Time検索時間 + @Time集計時間,'mm:ss.fff') AS 合計

サンプルコードの実行方法

サンプルコードのダウンロード

検証環境

関連ページ