Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Sind UNION Statements in SQL eigentlich gefährlich?


DennisXX - Mi 01.02.12 23:17
Titel: Sind UNION Statements in SQL eigentlich gefährlich?
Hallo zusammen !

Ein Arbeitskollege von mir hat heute behauptet, dass er UNION oder EXCEPT/MINUS oder INTERSECT Statements in SQL gänzlich meiden würde, weil die angeblich in SQL sehr gefährlich sind bzw. negative und einschätzbare Nebenwirkungen haben können. Er konnte mir allerdings keine konkreten Beispiele dafür nennen.

Ist es tatsächlich so gefährlich, seine Ergebnissmengen vertikal mittels UNION usw. darzustellen, anstatt horizontal entsprechende JOINS durchzuführen?

Gruß
Dennis


jasocul - Do 02.02.12 09:32

Ich benutze die auch gelegentlich. Bisher kenne ich nur den Nachteil, dass diese nicht so performant sind.
Versuch mal ein Union mit einem order by. :mrgreen:
Normalerweise werden dann die Daten aller SQL-Anweisungen komplett gezogen und erst mit dem Ergebnis die Sortierung gemacht. In einem View würde ich sowas auf gar keinen Fall einsetzen.

Union und ähnlich Konstrukte verwende ich daher auch nur, wenn der Weg über joins nicht oder nur sehr schwierig zu lösen ist.


Ralf Jansen - Do 02.02.12 14:32

UNIONs sind nicht mehr oder weniger gefährlich als andere Konstrukte in SQL (Falsch eingesetzt bekommt man halt falsche Ergebnisse oder eine langsame SQL Abfrage)
Wenn du eine Abfrage korrekt durch einen Join darstellen kannst ist das in fast allen Fällen aber die schnellste Methode die man verwenden kann und deshalb üblicherweise vorzuziehen.

Wobei mir jetzt kein Problem einfällt wo man vor der Entscheidung steht 'nehm ich jetzt einen JOIN oder einen UNION?'. Das sind 2 unterschiedliche Konstrukte für unterschiedliche Problemfälle.