Wenn man das Statement nun so umstellt:
Code:
select * from b, c, d, e,
(select id from a where wert = 4) x
where x.id = b.id
and b.xid = c.id
and c.yid = d.id
and d.zid = e.id
so kann die Datenbank zuerst die Teilmenge bilden, die die Einschränkung enthält und muss dann aus den anderen Tabellen nur noch die Datensätze zur Ergebnismenge zusammenstellen, die zur einschränkenden Teilmenge gehören.
Und ist das eine Einschränkung auf vielleicht mal 10% oder gar weniger, so kann man hier deutliche Laufzeitunterschiede ausmachen.
Eine Alternative wäre auch
Code:
select *
from a join b on (a.xid=b.id and a.wert=4)
join c on (b.xid=c.id)
join d on (c.yid=d.id)
join e on (d.zid=e.id)
(ist allerdings von der
DB abhängig)
Aber das
professionell ist hier doch hoffentlich ironisch gemeint. Es war doch wohl eher ein System, für das man bezahlen muss
Ich werd' der Selbsteinschätzung des Herstellers doch nicht widersprechen
Gruß
K-H