Leistung von Union versus Union alle
-
26-09-2019 - |
Frage
Ich muss eine ausgewählte Anweisung über mehrere Tabellen ausführen. Ich bin sicher, dass die Tabellen verschiedene Datensätze zurückgeben. Ich benutze sowieso Union All.
Ist es besser, Union oder Union in Leistungsbedingungen zu verwenden, wenn ich sicher bin, dass die Tabellen verschiedene Datensätze zurückgeben?
Lösung
Union alle werden besser abschneiden als Gewerkschaft, wenn Sie nicht besorgt sind, doppelte Aufzeichnungen zu beseitigen eindeutige Art Betrieb. Sehen: SQL Server - Unterschied zwischen Union vs. Union All - Optimaler Leistungsvergleich
Andere Tipps
Union ist immer schneller, da Union doppelte Einträge ausschließt
Union implementieren intern zwei Abfragen. 1.SELECT
Dies gibt einen Datensatz 2 zurück.DISTINCT
. Jeder, der Datenbank -Interna studiert hat, kann leicht verstehen, dass a DISTINCT
Die Klausel ist in Bezug auf die Verarbeitung äußerst kostspielig.
Wenn Sie sich ziemlich sicher sind, dass der resultierende Datensatz keine eindeutigen Zeilen haben muss, können wir überspringen UNION
und verwenden UNION ALL
stattdessen.
UNION ALL
wird gleich sein wie UNION
außer dass es nicht feuert a DISTINCT
intern kostspielige Operationen in den USA erspart
Es ist besser, Union alle zu verwenden, wenn Sie wissen, dass Sie alle Ergebniszeilen wollen, ob Sie wissen, dass sie unterschiedlich sind oder nicht. Union ohne "alles" wird stets Führen Sie die "besondere Überprüfung" durch, unabhängig davon, was die Daten tatsächlich sind.
Warum ist Union alles schneller? Weil Union eine Sortierung durchführen muss, um die Duplikate zu entfernen. Wenn Sie keine Duplikate entfernen müssen, ist die Gewerkschaft alle die bessere Option, aber Union hat einen Zweck und sollte gegebenenfalls verwendet werden.