Zur Vereinigung oder alle Vereinigung, ist, dass die Frage
-
29-09-2019 - |
Frage
Ich habe zwei Anfragen, dass ich UNION
ing zusammen, so dass ich schon wissen, dass es keine doppelten Elemente zwischen den beiden Abfragen sein. Daher produzieren UNION
und UNION ALL
die gleichen Ergebnisse.
Welche soll ich verwenden?
Lösung
Sie sollten die eine, die die Absicht übereinstimmt, was Sie suchen. Wenn Sie sicherstellen möchten, dass es keine Duplikate verwenden UNION
sind, sonst UNION ALL
verwenden. Nur weil Sie Ihre Daten, um die gleichen Ergebnisse produzieren jetzt bedeutet nicht, dass es immer.
sagte, wird UNION ALL
schneller auf jede vernünftige Datenbank-Implementierung finden Sie die Artikel unten für Beispiele. Aber in der Regel sind sie gleich, außer dass UNION
führt ein zusätzlicher Schritt identische Zeilen entfernen (wie man erwarten könnte), und es kann zu dominieren Ausführungszeit neigen.
Andere Tipps
Ich sehe, dass Sie diese Frage PERFORMANCE mit Tags versehen haben, so dass ich das Ihre primäre Überlegung übernehmen.
UNION ALL
absolut outperform UNION
da SQL nicht über die zwei Sätze für dups zu überprüfen.
Es sei denn, Sie benötigen SQL die Dublettenprüfung für Sie ausführen, immer UNION ALL
verwenden.
Nach http://blog.sqlauthority.com/2007/03/10/sql-server-union-vs-union-all-which-is-better-for-performance/ zumindest für Leistung ist es besser UNION ALL zu verwenden, da sie nicht aktiv unterschiedliche Duplikate tut und als solche ist schneller
würde ich UNION ALL
sowieso verwenden. Obwohl Sie wissen, dass es keine Duplikate sein werden, abhängig von Ihrer Datenbank-Server-Engine, ist es vielleicht nicht wissen.
Also, nur zusätzliche Informationen zu DB-Server zur Verfügung zu stellen, um für seine Anfrageplaner eine bessere Wahl (wahrscheinlich), verwendet UNION ALL
.
Having said that, wenn Ihr DB-Server 's Anfrageplaner ist intelligent genug, um die Informationen aus dem UNION
Klausel und Tabellenindizes zu schließen, dann Ergebnisse (Performance und semantische weise) sollten gleich sein.
Jeder Fall, es hängt stark von dem DB-Server Sie verwenden.
Da es keine Duplikate von der beide Gebrauch UNION ALL sein. Sie müssen nicht nach Duplikaten überprüfen und UNION ALL wird die Aufgabe effizienter Vorform.