Frage

Ich habe zwei Anfragen, dass ich UNIONing 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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top