25

複数のテーブルでselectステートメントを実行する必要があります。テーブルは異なるレコードを返すと確信しています。とにかくUNIONALLを使っています。

テーブルが異なるレコードを返すことが確実な場合は、パフォーマンスの観点からUNIONまたはUNIONALLを使用する方がよいでしょうか。

4

5 に答える 5

37

UNION ALLは、コストのかかる個別の並べ替え操作を回避するため、重複レコードを削除する必要がない場合、UNIONよりもパフォーマンスが向上します。参照:SQL SERVER –ユニオンとユニオンオールの違い–最適なパフォーマンスの比較

于 2010-09-02T14:15:10.463 に答える
5

UNIONは重複したエントリを除外するため、UNIONALLは常に高速です

于 2010-09-02T14:14:12.720 に答える
4

UNION は内部的に 2 つのクエリを実装します。1.SELECTデータセットを返します 2. DISTINCT. データベースの内部を学んだことのある人なら誰でも、DISTINCT節が処理に関して非常にコストがかかることを容易に理解できます。

結果のデータセットに一意の行が必要ないことが確実な場合は、スキップして代わりにUNION使用できUNION ALLます。

UNION ALLと同じですが、コストのかかる操作を内部的に回避UNIONすることはありません。DISTINCT

于 2010-10-14T09:47:25.273 に答える
3

結果の行が区別できるかどうかに関係なく、すべての結果行が必要であることがわかっている場合は、UNIONALLを使用することをお勧めします。「all」のないUNIONは、データが実際に何であるかに関係なく、常に「個別チェック」を実行します。

于 2010-09-02T14:28:54.847 に答える
2

UNION ALL の方が速いのはなぜですか? UNION は重複を削除するために並べ替えを行う必要があるためです。重複を削除する必要がない場合は、UNION ALL の方が適していますが、UNION には目的があり、適切な場合に使用する必要があります。

于 2010-09-04T20:25:00.227 に答える