MySQL: UNION ALL deutlich schneller als UNION
Hierbei nimmt der Zeitgewinn mit wachsender Größe des Ergebnis-Sets zu.
Der Grund ist, dass ein
SELECT UNION
tatsächlich einem
SELECT UNION DISTINCT
entspricht. Dies bedeutet, dass MySQL sicherstellt, dass jede Ergebniszeile nur einmal in der Ergebnismenge vorhanden ist. Für diese Überprüfung wird in einer temporären Ergebnistabelle ein Key erstellt, der den Hash-Wert der jweiligen Ergebniszeile darstellt. Es wird dann dafür gesorgt, dass diese Hash-Werte unique sind. Die Berechnung der Hash-Werte kostet natürlich entsprechend Rechenzeit.
Demnach ist es performanter explizit ein
UNION ALL
auszuführen, wenn man nicht auf die Einzigartigkeit der Datensätze im Ergebnis angewiesen ist, oder auf Grund der Datenstruktur so oder so keine Ergebniszeilen doppelt vorkommen können.
Noch keine Kommentare!