UNIONとは集合演算子で詳しくは
こちらをご覧ください。
また、UNION ALLも集合演算子で詳しくは
こちらをご覧ください。
UNIONもUNION ALLも、
SQLの結果をmerzeする演算子です。(その後、ソートする)
この2つの演算子の違いは、重複行の削除をするかしないか です。
UNIONは
merge → sort → 重複した行の削除 を行います。
UNION ALLというのは
merge → sort
を行います。重複した行の削除は行わないのです。
そのため、
mergeした結果に重複した行が存在しない ことが事前にわかっている場合に限り、UNION ALLを使用することによりパフォーマンスがあがります。
また、mergeした結果に重複した行が存在する場合で、重複行の削除が必要でないのなら、UNION ALLを使用したほうがパフォーマンスはあがります。