7

SQL Server Management Studio の使用。

結果ウィンドウがテストに影響を与えることなく、大きな選択 (たとえば 600k 行) のパフォーマンスをテストするにはどうすればよいですか? 2 つのクエリが両方とも同じ場所に出力されるため、すべてが同じであれば、実際には問題になりません。しかし、テスト サイクルをスピードアップしたいと考えており、SQL Server Management Studio の出力設定が邪魔になっていると考えています。テキストへの出力は私が現在使用しているものですが、より良い代替手段を望んでいます。

データベースがローカルボックスにあるため、これが私の数値に影響を与えていると思います.

編集:ここで WHERE 1=0 を実行することについて質問がありました(結合は発生するが出力はないと考えています)が、テストしたところ機能しませんでした-クエリパフォーマンスの有効な指標ではありません.

4

7 に答える 7

11

クエリの前に行うことができSET ROWCOUNT 1ます。それがまさにあなたが望むものかどうかはわかりませんが、大量のデータが返されるのを待つ必要がなくなるため、正確な計算コストが得られます.

ただし、クライアント統計をクエリに追加すると、数値の 1 つはサーバー応答の待機時間であり、ネットワーク経由でデータを転送するのにかかる時間を含まないサーバーの計算時間を示します。

于 2009-08-06T16:50:34.183 に答える
3

SET STATISTICS TIME ONを使用して、サーバー上の時間の測定値を取得できます。また、SSMS で Query/ Include Client Statistics (Shift+Alt+S) を使用して、クライアント時間の使用状況に関する詳細情報を取得できます。SQL クエリは実行されず、終了時にクライアントに結果を返しませんが、代わりに結果を返すときに実行され、通信チャネルがいっぱいの場合は実行が中断されることに注意してください。

クエリが結果パケットをクライアントに送り返すことを完全に無視する唯一のコンテキストは、アクティブ化です。ただし、パフォーマンスを測定するときは、出力をクライアントに返す時間も考慮する必要があります。自分のクライアントが SSMS よりも高速であると確信していますか?

于 2009-08-06T17:10:35.580 に答える
1

SET ROWCOUNT 1最初の行が返された後に処理を停止します。つまり、計画にブロッキング演算子が含まれていない限り、結果は役に立たなくなります。

些細な例を挙げる

SELECT * FROM TableX

実際のこのクエリのコストは、 の行数に大きく依存しますTableX

を使用しSET ROWCOUNT 1ても、そのいずれも表示されません。TableX1 行か 10 億行かに関係なく、最初の行が返された後に実行が停止します。

SELECT結果を表示する SSMS によって速度が低下することなく、論理読み取りなどを確認できるように、結果を変数に割り当てることがよくあります。

  SET STATISTICS IO ON
  DECLARE @name nvarchar(35),
          @type nchar(3)

  SELECT @name = name, 
         @type = type
  FROM master..spt_values

関連する Connect Item 要求があります SSMS および/または TSQL で「サーバーで結果を破棄する」オプションを提供します

于 2012-03-13T13:25:43.053 に答える
0

結果を出力しない場合、クエリのパフォーマンスをどのようにテストできますか? クエリがどのように実行されるかについてテストで何もわからない場合、テストを高速化しても意味がありません。この犬種のクエリが本番環境にプッシュされてからデータが返されるまでに 10 分かかることを本当に知りたいですか?

もちろん、600,000 件のレコードを返すには時間がかかります。情報はネットワークを経由する必要があるため、ユーザー インターフェイスでも表示されますが、おそらくクエリ ウィンドウよりも時間がかかります。

于 2009-08-06T18:40:19.687 に答える
0

あなたができる最善のことは、実際のクエリのクエリ実行プラン ( Ctrl+を押す) を確認することです。Lこれにより、利用可能なパフォーマンスの最良の推定値が得られます。

于 2009-08-06T16:33:38.993 に答える
0

WHERE 1=0where句は、Management Studioではなく、SQL Server側で確実に発生していると思います。結果は返されません。

DB エンジンは、Mgmt Studio を実行しているマシンと同じですか?

あなたは出来る :

  • テキストへの出力または
  • ファイルに出力します。
  • [クエリ結果] ウィンドウを閉じます。

これは、Mgmt Studio でグリッドを描画するために費やされたサイクルを移動するだけです。おそらく、Resuls to Text の方が全体的にパフォーマンスが高いでしょう。ペインを非表示にすると、Mgmt Studio でデータを描画するサイクルが節約されます。それはまだ Mgmt Studio に返されているため、実際には多くのサイクルが節約されていません。

于 2009-08-06T16:34:37.057 に答える