UNION
演算子では、行が返される前に、重複するタプル(行)を結果セットから削除する必要があります。これは事実上、SORTUNIQUE操作です。これは、小さな結果セットの場合は比較的安価ですが、大規模なセットの場合、サーバー時間にリソースを大量に消費する可能性があります(つまり、長い時間がかかります)。
理論的には、クエリをUNION ALL
と組み合わせる UNION
ではなく演算子 ( n を排除するため、演算子が最速になります -1)データベースへのラウンドトリップと、クエリを個別に実行すること。ただし、 nの値が大きい場合 、SQLテキストのサイズ(最大パケットサイズ)に実際的な制限があります。
UNION
から選択すると 演算子と個別のクエリ。大きな結果セットの場合、個別のクエリはサーバー側でのリソース消費が少なくなります。
要するに、これは実際には、各クエリの手間のかかる作業と、SORTUNIQUE操作の手間のかかる作業との間のトレードオフです。