仮想環境で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を割り引くようですが、これも良いベースラインにはなりません。
私の質問は、このような状況で役立つ可能性のある他の統計分析やパフォーマンス分析のテクニックですか?
*非常に*簡単な比較として、show実行計画を使用して同じバッチで両方を実行し、どれが全体の割合を最大限に活用するかを確認できます。 – adrianbanks
@adrian実行計画はガイドに過ぎません。推定サブツリーコストA vs Bが実際に実行されたときに間違っていることが多い – RichardTheKiwi
@リチャード:実際の実行計画を使用していても当てはまりますか? – adrianbanks