- 締切済み
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でも、どちらでも結果が同じになる・・・という ことであってますでしょうか? ご教示の程、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hatena1989
- ベストアンサー率87% (378/433)
2つのテーブルに重複がなければ、結果は同じになりますが、UNION だと、重複がないかチェッするという処理が入りますから、その分、重くなりますね。 重複がないことが分かってる、あるいは、重複をはじく必要がないなら、UNION ALL の方がいいでしょう。
お礼
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でいいのかなと。 しかし、以前いけてたもの、テスト環境でもいけてたものが、何故実環境だと うまくいかないのかが不思議です。