SQL Server Management Studio、実行時間をミリ秒に下げる方法


220

SSMSでバッチを送信(たとえば、クエリを実行)すると、ステータスバーに実行にかかった時間が表示されます。ミリ秒の精度でクエリ時間を表示するようにSSMSを構成することは可能ですか?

これが私が話しているバーで、関心のあるセクションが赤丸で囲まれています:

ここに画像の説明を入力してください


3
実際には質問に答えていませんが、SQL Server Profiler(ログツール)を使用してクエリの期間を確認できます。期間はミリ秒単位で測定されます。
AGuyCalledGerald 2012

回答:


66

私はこれを見つけるまでそれと苦労していました...

http://blog.sqlauthority.com/2009/10/01/sql-server-sql-server-management-studio-and-client-statistics/

また、[プロパティ]ウィンドウを開くと、実行時間がかかる魔法の「接続経過時間」が見つかることがあります。


18
プロパティウィンドウに関する部分は、このスレッドに対する答えです。「Elapsed Time」はあなたを見つめながらそこに座っています。
Eric

そして、私は今、この答えが最も正しいので、受け入れられた答えとして設定しています。
Michael Goldshteyn

363

あなたがしたいことはこれです:

set statistics time on

-- your query

set statistics time off

これにより、メッセージウィンドウに次のような出力が表示されます。

SQL Server実行時間:CPU時間= 6ミリ秒、経過時間= 6ミリ秒。


1
ただし、これにより、メッセージウィンドウにタイミングが表示されます。つまり、クエリを実行した後、タイミングを手動で切り替える必要があります。また、結果は意味をなさないようです。たとえば、CPU時間= 1357ミリ秒、経過時間= 169ミリ秒。ハイパースレッディングを備えた8つのコア(つまり、16個の仮想)を使用している場合でも、それはどのように加算されますか?
Michael Goldshteyn

2
@MichaelGoldshteyn CPU時間が長い理由は、マルチコアまたはハイパースレッドのCPUを使用しているためです。

25
@MichaelGoldshteyn 1357/8 = 169.625。一致?
Dan J

3
@ DanJ、DBはメモリからすべてを行うわけではありません。多くの場合、I / Oが関与し、I / Oはより多くの経過時間を意味します。
Michael Goldshteyn

9
@binki 1,555日経過した私のコメントが不正確だったことは間違いない。
benizi

125

次のいずれかを実行して、クライアント統計をオンにします。

  • メニュー:クエリ>クライアント統計を含める
  • ツールバー:ボタンをクリックします([実際の実行時間を含める]の横)
  • キーボード:Shift-Alt-S

次に、最後の10回の実行(および平均!)までのタイミング、IOデータ、行数などを記録する新しいタブが表示されます。

ここに画像の説明を入力してください


2012年11月の@Ymagine Firstの回答と同じです。上記の回答を参照してください...
ボグダンボグダノフ2015

そのサイトには(皮肉にも)SQLエラーがあったため、Googleのキャッシュから主要な情報を抽出し、新しい回答として投稿しました。私は信用を盗むつもりはなかったし、多分代わりに元の答えを編集すべきだった。
NickG

実際、私は質問を編集するのに十分な担当者がいないようです。それがおそらく私がそうしなかった理由です。
NickG

3
FYI時間統計の単位はミリ秒単位である:brentozar.com/archive/2012/12/...
congusbongus

17

実行時間をprocの変数として取得するには:

DECLARE @EndTime datetime
DECLARE @StartTime datetime 
SELECT @StartTime=GETDATE() 

-- Write Your Query


SELECT @EndTime=GETDATE()

--This will return execution time of your query
SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in millisecs] 

そしてこれを見て

クエリパフォーマンスの測定:「実行プランのクエリコスト」と「所要時間」


1
Datepart NSはナノ秒を表し、ミリ秒はMSを使用します
MilanMatějka2014

12

私は同じことの後で、素晴らしい次のリンクを見つけました:

http://www.sqlserver.info/management-studio/show-query-execution-time/

パフォーマンスを測定する3つの異なる方法を示しています。すべて自分の強みに適しています。私が選んだのは次のとおりです:


DECLARE @ Time1 DATETIME

DECLARE @ Time2 DATETIME

SET @ Time1 = GETDATE()

-ここにクエリを挿入

SET @ Time2 = GETDATE()

SELECT DATEDIFF(MILLISECOND、@ Time1、@ Time2)AS Elapsed_MS


これにより、クエリの結果と、完了までにかかった時間が表示されます。

お役に立てれば。


私は、時々ショーの時間、時にはちょうどショー0その不定を発見した
RMati

2

情報バーの拡張については知りません。

ただし、[メッセージ]タブに表示されるすべてのクエリのデフォルトとして設定されたタイミングを取得できます。

クエリウィンドウで、[クエリメニュー]項目に移動し、[クエリオプション]を選択して、[実行]グループで[詳細]を選択し、[統計時間の設定] / [統計IOの設定]チェックボックスをオンにします。これらの値は、設定された統計のオン/オフを忘れずに、各クエリのメッセージ領域に表示されます。

Shift + Alt + Sを使用して、いつでもクライアント統計を有効にすることもできます


0

あなたはこのコードを試すことができます:

USE AdventureWorks2012;
GO
SET STATISTICS TIME ON;
GO
SELECT ProductID, StartDate, EndDate, StandardCost 
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET STATISTICS TIME OFF;
GO
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.