Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Union-Zeit V.S. separate Abfrage nacheinander

Die UNION -Operator erfordert, dass doppelte Tupel (Zeilen) aus der Ergebnismenge entfernt werden, bevor Zeilen zurückgegeben werden. Das ist effektiv eine SORT UNIQUE-Operation. Das ist für kleine Ergebnismengen relativ kostengünstig, aber für große Mengen kann es für die Serverzeit ressourcenintensiv sein (d. h. lange dauern).

Theoretisch kombiniert man die Abfragen mit einem UNION ALL Operator statt einer UNION Operator wäre am schnellsten, da er (n) eliminieren würde -1) Roundtrips zur Datenbank, vs. Abfragen separat ausführen. Aber für große Werte von n , werden Sie bei der Größe des SQL-Texts (maximale Paketgröße) auf praktische Grenzen stoßen.

Bei der Wahl zwischen UNION Operator und separate Abfragen, für eine große Ergebnismenge werden die separaten Abfragen auf der Serverseite weniger ressourcenintensiv sein.

Kurz gesagt, es ist wirklich ein Kompromiss zwischen dem schweren Heben für jede Abfrage und dem schweren Heben einer SORT UNIQUE-Operation.