複数のテーブルでselectステートメントを実行する必要があります。テーブルは異なるレコードを返すと確信しています。とにかくUNIONALLを使っています。
テーブルが異なるレコードを返すことが確実な場合は、パフォーマンスの観点からUNIONまたはUNIONALLを使用する方がよいでしょうか。
複数のテーブルでselectステートメントを実行する必要があります。テーブルは異なるレコードを返すと確信しています。とにかくUNIONALLを使っています。
テーブルが異なるレコードを返すことが確実な場合は、パフォーマンスの観点からUNIONまたはUNIONALLを使用する方がよいでしょうか。
UNION ALLは、コストのかかる個別の並べ替え操作を回避するため、重複レコードを削除する必要がない場合、UNIONよりもパフォーマンスが向上します。参照:SQL SERVER –ユニオンとユニオンオールの違い–最適なパフォーマンスの比較
UNIONは重複したエントリを除外するため、UNIONALLは常に高速です
UNION は内部的に 2 つのクエリを実装します。1.SELECT
データセットを返します 2. DISTINCT
. データベースの内部を学んだことのある人なら誰でも、DISTINCT
節が処理に関して非常にコストがかかることを容易に理解できます。
結果のデータセットに一意の行が必要ないことが確実な場合は、スキップして代わりにUNION
使用できUNION ALL
ます。
UNION ALL
と同じですが、コストのかかる操作を内部的に回避UNION
することはありません。DISTINCT
結果の行が区別できるかどうかに関係なく、すべての結果行が必要であることがわかっている場合は、UNIONALLを使用することをお勧めします。「all」のないUNIONは、データが実際に何であるかに関係なく、常に「個別チェック」を実行します。
UNION ALL の方が速いのはなぜですか? UNION は重複を削除するために並べ替えを行う必要があるためです。重複を削除する必要がない場合は、UNION ALL の方が適していますが、UNION には目的があり、適切な場合に使用する必要があります。