2011-03-21 23 views
5

仮想環境でSQL 2005 DBを実行しています。パフォーマンスのためにSQLクエリの2つの変種を比較する最良の方法は何ですか?

単純化するために、2つのSQL SELECTクエリがあるとしましょう。彼らはまったく同じことをしています。しかし、私はパフォーマンス目的のためにそれらを分析しようとしています。

一般的に、ローカルDBを起動し、データをロードし、タイミングを使用して、あるバリアントを他のバリアントと比較します。

しかし、この場合、DBが大きく、テストボックスなので、クライアントは他のVMにも対応しているホストに配置しています。

DBが大きすぎるため、ローカルにプルダウンすることができません。そのため、(少なくとも今のところは)DBが抜けています。

しかし、私の主な問題は、私がサーバーに対してクエリを実行すると、そのタイミングがどこにあるかということです。 + exact +同じクエリを4回実行し、7秒、8分、3分45分、15分のタイミングを得ることができます。

私の最初の考えはSET STATISTICS IO ONを使用していました。

しかし、これは基本的にはクエリであるテーブルの読み取りと書き込みの統計情報を生成します。クエリのバリエーション(一時テーブル、ビュー、対ジョインなど)によっては、集計。

私はSET STATISTICS TIME ONを使用していますが、CPU時間を使用していますが、これはすべてのIOを割り引くようですが、これも良いベースラインにはなりません。

私の質問は、このような状況で役立つ可能性のある他の統計分析やパフォーマンス分析のテクニックですか?

+0

*非常に*簡単な比較として、show実行計画を使用して同じバッチで両方を実行し、どれが全体の割合を最大限に活用するかを確認できます。 – adrianbanks

+0

@adrian実行計画はガイドに過ぎません。推定サブツリーコストA vs Bが実際に実行されたときに間違っていることが多い – RichardTheKiwi

+0

@リチャード:実際の実行計画を使用していても当てはまりますか? – adrianbanks

答えて

1

STATISTICS IO情報はまだ有効です。読み込み、書き込み、スキャンの数が大幅に異なると、どのクエリが優れているかがわかります。

クエリごとに実行計画情報を表示することもできます。クエリ - >推定実行計画の表示を選択すると、クエリを実行するSQL Server見積もりの​​グラフ表示が表示されます。実際の使用計画を表示するには、クエリ - >実績実行計画を含めることもできます。

SET SHOWPLAN_TEXT,SET SHOWPLAN_ALLまたはSET SHOWPLAN_XMLを使用して、実行計画を含めてプランのテキスト表示を表示することもできます。

実行計画の結果を表示すると、推定コスト値を見て、各クエリの値を比較できます。推定コストは、各オプションのコストを比較するために使用できる相対的な値です。

+0

私はグラフィカルな計画を立てていましたが、比較しているクエリが大きく異なっている場合は、リンゴとオレンジを比較しているようですが、グラフィックプランがかなり大きくなると比較するのは難しいです。 ShowPlan_Textを見ると、少し上手くいくかもしれません。それ以前に遊んでいなかった。また、見積もりコスト値をさらに見ていきます。ありがとう! – DarinH

+0

私はBobsに受け入れられた答えを与えるつもりですが、私はまだもっと簡単なアプローチがあることを望んでいます。しかし、1日の終わりには、マシンにTBまたは2TBドライブをインストールして、ローカルでテストしてやることができるようにしています。 – DarinH

関連する問題