3

本当に「いい」ではないSQLクエリがあるとします。

SQLクエリには、長い条件を伴う多くの内部結合があり、最後に単純な「where」ステートメントがあります。

ここで、最後の「where」ステートメントを除いて、そのSQLクエリに対応するビューを作成するとします。そのため、長いクエリを作成する代わりに、ビューを使用して「where」ステートメントを追加するだけです。

私の質問は次のとおりです。どれが最高のパフォーマンスを発揮しますか?

「表示」オプションが、最初のオプションの1つのSQLステートメントではなく、2つのSQLステートメントに対応しているかどうかはわかりません。または、クエリを実行する前に、「表示」クエリはより単純なクエリに「貼り付け」られ、「同じ」になります。

4

2 に答える 2

1

変わりはない。ビューは、クエリのみと同じクエリを使用します。

別の言い方をすれば、それをビューテーブルビューに保存する必要はありません。それらは、外部から見やすくするために作成されたクエリにすぎません。

于 2012-06-16T01:17:01.967 に答える
1

使用しているDBMSにコストベースのクエリオプティマイザがあると仮定すると、クエリの一部がビューに変換されたときに、パフォーマンスが向上することはおそらくありません。これは、データベースのクエリ説明ツールで、両方のバージョンのクエリの推定コストを比較することで確認できます。

クエリの問題点の場所は予期しないことが多いため、クエリの説明ユーティリティを使用して、クエリのコストが高くなる場所を正確に特定することをお勧めします。これらの結合はすべて速度を低下させているように見えるかもしれませんが、行を接続するために必要なI/OおよびCPUサイクルを最小限に抑えるインデックスを利用している可能性があります。インデックス付けされていない列がWHEREまたはON句で参照されているため、クエリが失敗することがよくあります。

于 2012-06-16T01:11:34.690 に答える