0

私は SQL Server 2008 R2 を使用しており、いくつかの SQL クエリのパフォーマンスをさまざまな書き方でテストしようとしています。これらには、udfs、ビュー、インライン、結合、ピボットなどが含まれます。

かなりのテストを行った結果、udfs は非常に遅いと言えます。そのため、それらをクエリに拡張しました。しかし、パフォーマンス テストが進むにつれて、一貫性のない結果が得られたため、違いを見分けることが非常に難しくなりました。

たとえば、結合でいっぱいのクエリと、一部の結合をインライン選択に移動するクエリをテストしました。すべての結合をインライン選択に移動するまで、インライン スタイルのパフォーマンスは向上し、元のスタイルよりもパフォーマンスが大幅に低下しました。

もう 1 つの問題は、信頼性が非常に低い実行時間です。同じクエリの場合、実行時間も異なり、一貫性もありません。SQL プロファイラーを開いたときのように、CPU 時間、読み取り、書き込みが高かったとしても、実行時間は速くなる可能性があります。

SQL クエリをテストするには、できるだけ公正な方法が必要です。実行計画は役に立ちません。CPUサイクル(経過時間ではない)、読み取り、書き込み、メモリなど、計算できて一貫性のある数値が必要です。そして、同じテスト環境を強制する方法が必要です。DBCC DROPCLEANBUFFERS を試しましたが、役に立ちませんでした。

ありがとうございました!

4

0 に答える 0