Databases Reference
In-Depth Information
Einige Joins lassen sich auch durch geschachtelte Abfragen ausdrücken. So kön-
nen wir alle vorhandenen Asterix-Alben durch einen Join ermitteln (siehe auch
Listing 13.2):
Listing 14.12: Abfrage der Asterix-Alben mit einem Join
select a.titel
from alben a, reihen r
where a.reihe=r.id
and r.name='Asterix'
Das gleiche Ergebnis (siehe Tabelle 13.5) liefert uns aber auch die folgende ge-
schachtelte Abfrage:
Listing 14.13: Abfrage der Asterix-Alben mit Schachtelung
select a.titel
from alben a
where reihe = (
select id
from reihen r
where r.id=a.reihe
and r.name='Asterix'
)
Der Join ist hier wesentlich übersichtlicher. Anfänger greifen oft auf geschachtelte
Abfragen zurück, auch wenn Joins geeigneter sind. Das mag daran liegen, dass
diese Variante der Schachtelung von Schleifen sehr ähnlich ist, wie wir sie aus der
prozeduralen Programmierung kennen.
Aus Sicht des RDBMS ist es übrigens egal, welche Variante wir wählen. Jede
SQL-Anweisung wird vom Optimierer untersucht und in eine ausführbare Form
gebracht. Der Optimierer sollte die Äquivalenz der beiden Varianten aus Lis-
ting 14.12 und 14.13 feststellen.
Hinweis
Bei vielen Abfragen können wir geschachtelte Abfragen und Joins al-
ternativ einsetzen. Keine der beiden Strategien ist grundsätzlich bes-
ser. Berücksichtigen Sie beide Varianten, und wählen Sie die klarere
aus.
 
Search WWH ::




Custom Search