2010-10-20 17 views
10

Ich bin interessiert zu wissen, ob eine Union besser als mehrere Abfragen ist.mysql Union vs mehrere Abfragen

Wenn ja, gibt es Zeiten, in denen mehrere Abfragen schneller oder aus anderen Gründen bevorzugt würden?

+1

Warum eine Abstimmung down? – Yehosef

Antwort

9

Wenn Sie UNION ALL verwenden und die Ausgabe nicht sortieren, sollte die Leistung von UNION mehr oder weniger der Leistung mehrerer getrennter Abfragen entsprechen, vorausgesetzt, die Abfragen sind identisch mit denen, die Sie UNIONing verwenden zusammen. Wenn Sie die Daten sortieren, verursachen Sie offensichtlich etwas Overhead (obwohl wahrscheinlich weniger, als wenn Sie Ihre Anwendung darin sortiert hätten). Wenn Sie das Schlüsselwort ALL weglassen, wird MySQL die zusätzlichen Schritte zur DISTINCT-Bearbeitung Ihrer Ergebnisse ausführen. Auch dies verursacht zusätzlichen Overhead, obwohl wahrscheinlich weniger als das selbst tun.

0

Sie fragen, ob es "besser" ist - ich nehme an, Sie beziehen sich auf "Performance-weise"?

Wenn die Auswirkungen auf die Geschwindigkeit minimal sind, möchten Sie möglicherweise mehrere Abfragen bevorzugen, damit Ihr Code besser lesbar bleibt. anstatt sich mit mehreren Abfragen zu befassen, verschiedene Dinge in einer Union zu tun.

Hängt sicher vom Anwendungsfall ab. Aber lesbaren und verständlichen Code könnte es in einem größeren Projekt auf lange Sicht wert sein

+0

Danke - ja, ich bin gemeint ist es leistungsfähiger. Lesbarkeit des Codes ist nicht wirklich ein Problem (für mich ..), weil Sie die Abfragen getrennt halten können und dann auf der Code-Ebene sie mit der "UNION" -Syntax verbinden oder nicht. – Yehosef