• 締切済み

UNIONとUNION ALLの違いについて

お世話になります。 一応違いについては把握しておりますが、念のため 確認させて下さい。 以下のクエリがあります。 クエリA  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5 クエリB  受注日   型番  数量の合計  2015/01/01 BBB   5  2015/01/01 CCC   10  2015/01/02 CCC   5 クエリA UNION クエリB の場合は、  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5  2015/01/01 CCC   10  2015/01/02 CCC   5 となると思ってます。 ※型番Bの重複がマージされる クエリA UNION ALL クエリB の場合は、  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5  2015/01/01 BBB   3  2015/01/01 CCC   10  2015/01/02 CCC   5 となると思ってます。  ※重複があっても単純にくっつける。 あってますでしょうか? で、例えば、テーブルA及びBにそれぞれ「ライン」という項目があり、 テーブルAの方は、L01、L02となっており、テーブルBの方は LL01、LL02となっていたとしたら(要するにテーブルAのラインと テーブルBのラインが重複することが無い)、UNIONでも UNION ALLでも、どちらでも結果が同じになる・・・という ことであってますでしょうか? ご教示の程、宜しくお願い致します。

みんなの回答

回答No.1

2つのテーブルに重複がなければ、結果は同じになりますが、UNION だと、重複がないかチェッするという処理が入りますから、その分、重くなりますね。 重複がないことが分かってる、あるいは、重複をはじく必要がないなら、UNION ALL の方がいいでしょう。

naoto0216
質問者

お礼

hatena1989様 早速のご回答ありがとうございます。 >その分、重くなりますね。 仰る通りなのですが。。何故かUNION ALLとすると「クエリが複雑すぎます」 というエラーになってしまうのです。 実際にはこのユニオンクエリ(クエリXとします)を使って、更に他のクエリ を3つほど紐付けてクエリを作成しております。  クエリX------クエリ1       |        --クエリ2       |        --クエリ3 で、このクエリを開くと「クエリが複雑すぎます」となり、クエリXで UNIONとすると、普通に開けるようになるのです。 ちなみにクエリXは数年前に作成したのですが、今までUNION ALL でいけてました。 ※実は、以前に同じ症状となり質問を投稿させて頂きました。  http://okwave.jp/qa/q8035314.html  で、恐らく何かやってUNION ALLでいけるようになったと思うのですが  何をやったか忘れてしまい。。 今回クエリXに2つフィールドを追加しましたが、テスト環境ではUNION ALL で問題無くいけてたのですが、実環境だと何故か「クエリが複雑すぎます」 となります。 テスト環境も実環境も同じOS、同じバージョンのAccessです。 ※最適化/修復もやってみましたが変わらず。 とりあえず、UNIONとすることによりエラーは解消され、例にも挙げました通り クエリAとクエリBは重複することが無いので、このままUNIONでいいのかなと。 しかし、以前いけてたもの、テスト環境でもいけてたものが、何故実環境だと うまくいかないのかが不思議です。

関連するQ&A