Datenbanken Online Lexikon TH Köln, Campus Gummersbach
Aktuelle Änderungen - Suchen:

Mengenoperationen des Ausf�hrungsplans (Oracle)

UNION-ALL

Die Mengenoperation Vereinigung wird durch die Operation UNION-ALL im Ausf�hrungsplan dargestellt. In einer SQL-Abfrage wird sie als UNION oder UNION ALL bezeichnet. Die Ausf�hrung eines FULL OUTER JOINs in einer SQL-Abfrage kann auch dazu f�hren, dass sich der ORACLE-Optimizer f�r den Einsatz der Operation UNION-ALL entscheidet.

Der Operand UNION ALL liefert alle Werte, die von der linken und von der rechten Abfrage zur�ckgegeben werden, gleichg�ltig, ob Duplikate vorhanden sind oder nicht. Wenn die Duplikate nicht mitangezeigt werden sollen, ist die Anwendung von einem Algorithmus wie Hash Distinct oder Ordered Distinct erforderlich, um die von UNION ALL generierte Duplikate wieder zu entfernen. Oder man kann den Operand UNION ALL in der SQL-Abfrage durch UNION ersetzen, der die doppelten Datens�tze und NULL-Werte schon von vorne an entfernt.

Der Operand UNION f�hrt zu einer sehr aufwendigen Operation und verursacht beim Weglassen der ALL-Klausel Sortierungsvorg�nge (SORT UNIQUE-Operation) f�r die einzelnen Untermengen, weil die Option DISTINCT im UNION impliziert ist. UNION ALL ist kosteng�nstiger als UNION.


INTERSECTION

Die Mengenoperation Durchschnitt wird durch die Operation INTERSECTION im Ausf�hrungsplan dargestellt. In der SQL-Abfrage wird sie als INTERSECT bezeichnet. Diese Operation liefert alle unterschiedlichen Werte, die sowohl von der linken als auch von der rechten Abfrage des INTERSECT-Operanden zur�ckgegeben werden.

Alle Mengenoperationen sind sehr systembelastende Operationen und haben hohe Kosten, deswegen sollen sie vermieden werden.

Die Operation INTERSECTION ist kommutativ, d.h. die linken und rechten SQL-Abfragen d�rfen vertauscht werden, ohne dass sich das Ergebnis �ndert.

Alle Mengenoperationen, darunter auch die INTERSECTION-Operation, m�ssen vorher sortiert werden. Sie ben�tigen Sortieroperationen, bevor sie ihre Ergebnisse liefern.

Die INTERSECTION-Operation kann durch eine geschachtelte SELECT-Anweisung mit IN- oder EXISTS-Bedingung nachgebildet werden, z.B.:

 SELECT * FROM Angestellte WHERE Nachname IN (SELECT Nachname FROM Kunden);

MINUS

Die Mengenoperation Differenz wird durch die Operation MINUS im Ausf�hrungsplan dargestellt und sie wird in der SQL-Abfrage auch als MINUS bezeichnet. Diese Operation liefert alle unterschiedlichen Werte von der linken Abfrage des MINUS-Operanden, die aber nicht in der rechten Abfrage enthalten sind.

Alle Mengenoperationen sind sehr systembelastenden Operationen und haben hohe Kosten, deswegen sollen sie vermieden werden.

Die MINUS-Operation kann durch eine geschachtelte SELECT-Anweisung mit NOT IN- oder NOT EXISTS-Bedingung nachgebildet werden, z.B.:

 SELECT * FROM Angestellte WHERE Nachname NOT IN (SELECT Nachname FROM Kunden);

Siehe auch: Ausfuehrungsplanoperationen?, SQL-Tuning?, Optimizer, Ausf�hrungsplan einer SQL-Abfrage, Statistiken, Hints, Werkzeuge zum SQL-Tuning

Quellen:

Kategorie: Tuning, M