クエリやストアドプロシージャで時間がかかっている箇所を特定するために時間を計測するサンプルです。
サンプルコード
次のサンプルでは、検索処理と集計処理を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 合計
サンプルコードの実行方法
- SQL Server Management Studioのクエリエディタにサンプルコードを入力し、実行します。
 - システムテーブルを使用しているため、テーブルのCREATE等は必要ありません。
 
サンプルコードのダウンロード
検証環境
- Microsoft SQL Server Express Edition (64-bit) プラットフォーム:NT x64 バージョン:10.0.2531.0
 - Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))