Hallo,
LEFT JOIN tab2 ON tab1.id=tab2.tab1_id
LEFT JOIN tab3 ON tab2.id=tab3.tab2_id
LEFT JOIN tab4 ON tab3.id=tab4.tab3_id
-- warum dreimal LEFT JOIN? Alle aufeinander aufbauend. Da gibt es keine
-- Chance, die Auswertungsreihenfolge umzustellen. Bist Du Dir ganz sicher, -- dass Du keine INNER JOINs verwenden kannst?
INNER JOINS funktionieren auch, allerdings habe ich keinen Unterschied (zumindest bzgl Geschwindigkeit) feststellen können.
Bezüglich der Auswertungsreihenfolge noch einmal den richtigen Query:
INNER JOIN tab2 ON tab1.id=tab2.tab1_id
INNER JOIN tab3 ON tab1.time=tab3.time
INNER JOIN tab4 ON tab1.group=tab4.id
Inner Joins haben ein normalerweise ein anderes Ergebnis als Outer Joins. Zusammenhängende INNER JOINS lassen sich in der Reihenfolge vertauschen, ohne das Ergebnis zu beeinflussen. Für OUTER JOINs gilt dies nicht.
Bei Verwendung von INNER JOIN darf der Query Optimizer die Reihenfolge verändern, um einen besseren Ausführungsplan zu erhalten. Bei Verwendung von Outer Joins darf er dies nicht. Deswegen verwendet man Outer Joins nur dann, wenn man die zusätzlichen Ergebnisse, die ein Outer Join liefert, auch wirklich benötigt.
Freundliche Grüße
Vinzenz