クエリやストアドプロシージャで時間がかかっている箇所を特定するために時間を計測するサンプルです。
サンプルコード
次のサンプルでは、検索処理と集計処理を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))