UNION "と "UNION ALL "の違いは何ですか?
UNIONは重複したレコード(結果のすべての列が同じである)を削除しますが、
UNION ALL`は削除しません。
UNION ALLの代わりに
UNION` を使用すると、データベースサーバが重複した行を削除するために追加の作業を行わなければならないため、パフォーマンスが低下しますが、通常は重複した行は必要ありません (特にレポートを作成する場合)。
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
結果:。
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
結果:。
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
UNIONとUNION ALLの基本的な違いは、UNION操作は結果セットから重複した行を削除しますが、UNION ALLは結合後のすべての行を返します。
http://zengin.wordpress.com/2007/07/31/union-vs-union-all/ より
どのデータベースを使うかは重要ではありません。
UNION "と "UNION ALL "はすべてのSQL Serverで動作するはずです。
不必要な UNION
はパフォーマンスを大きく低下させるので避けるべきです。経験則として、どちらを使用すべきかわからない場合は、UNION ALL
を使用してください。