2010-09-02 8 views
11

Ich muss eine SELECT-Anweisung über mehrere Tabellen ausführen. Ich bin sicher, dass die Tabellen unterschiedliche Datensätze zurückgeben. Ich benutze sowieso UNION ALL.Leistung von Union im Vergleich zu Union alle

Ist es besser, UNION oder UNION ALL in Bezug auf die Leistung zu verwenden, wenn ich sicher bin, dass die Tabellen unterschiedliche Datensätze zurückgeben?

+0

möglich Duplikat [Zur Vereinigung oder Gewerkschaft alle, das ist die Frage] (http://stackoverflow.com/questions/3909563/to-union-or-union-all-das-ist-die-Frage) –

Antwort

5

UNION ALL immer schneller, weil UNION duplizierten Einträge ausschließen

1

Es ist besser, UNION ALL zu verwenden, wenn Sie wissen, dass Sie alle Ergebniszeilen möchten, unabhängig davon, ob Sie wissen, ob sie eindeutig sind oder nicht. UNION ohne "alle" wird immer die "eindeutige Prüfung" durchführen, unabhängig davon, was die Daten tatsächlich sind.

0

Warum ist UNION ALL schneller? Weil UNION eine Art durchführen muss, um die Duplikate zu entfernen. Wenn Sie keine Duplikate entfernen müssen, ist UNION ALL die bessere Option. UNION hat jedoch einen Zweck und sollte bei Bedarf verwendet werden.

3

UNION implementieren intern zwei Abfragen. 1. SELECT, die einen Datensatz zurückgibt 2. DISTINCT. Jeder, der Datenbank-Interna studiert hat, kann leicht verstehen, dass eine Klausel extrem teuer in Bezug auf die Verarbeitung ist.

Wenn Sie ziemlich sicher sind, dass der resultierende Datensatz keine eindeutigen Zeilen haben muss, können wir UNION überspringen und stattdessen verwenden.

UNION ALL als UNION gleich sein, außer dass es kein intern abfeuert DISTINCT uns teure Operationen schonen