質問

私は2つのクエリを持っています UNION一緒になって、2つのクエリの間に重複する要素がないことをすでに知っています。したがって、 UNIONUNION ALL 同じ結果が生成されます。

どちらを使用すればよいですか?

役に立ちましたか?

解決

探しているものの意図に一致するものを使用する必要があります。複製の使用がないことを確認したい場合 UNION, 、それ以外の場合は使用します UNION ALL. 。データが同じ結果を生成するからといって たった今 常にそうなるという意味ではありません。

そうは言っても UNION ALL SANEデータベースの実装では高速になります。例については、以下の記事を参照してください。しかし、通常、それを除いて同じです UNION 同一の行を削除するための追加のステップを実行します(予想されるかもしれません)、実行時間を支配する傾向があります。

他のヒント

この質問パフォーマンスにタグを付けたことがあるので、それがあなたの主な考慮事項だと思います。

UNION ALL 絶対にアウトパフォームします UNION SQLはDUPの2つのセットを確認する必要はないためです。

重複するチェックを実行するためにSQLが必要な場合を除き、常に使用してください UNION ALL.

によると http://blog.sqlauthority.com/2007/03/10/sql-server-union-vs-union-all-which-is-better-for-performance/ 少なくともパフォーマンスのためには、積極的に明確な複製をしていないので、より速いので、組合全員を使用する方が良いです

私は使うだろう UNION ALL とりあえず。それでも データベースサーバーエンジンに応じて、複製はないことを知っているかもしれませんが、それはわからないかもしれません。

したがって、クエリプランナーがより良い選択をするために、DBサーバーに追加の情報を提供するためだけに(おそらく)使用してください UNION ALL.

そうは言っても、もしあなたの場合 DBサーバーのクエリプランナーは、からの情報を推測するのに十分賢いです UNION 節とテーブルのインデックス、結果(パフォーマンスとセマンティックワイズ)は同じでなければなりません。

どちらの場合も、それは強く依存します DBサーバー あなたは使用しています。

2つの使用ユニオンすべてから重複がないためです。重複を確認する必要はなく、組合はすべてタスクをより効率的に予定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top