@Polarpixel
Deine Frage ist nicht so leicht zu beantworten.
Im allgemeinen ist es besser JOIN zu verwenden. Gegebenenfalls kann man auch mit der Reihenfolge der JOINs experimentieren, das bringt besonders bei großen Tabellen oft trastische Geschwindigkeitsunterschiede.
Leider ist das abhängig vom verwendeten Datenbankdesign(Normalisierungsgrad, Komplexität der Beziehungen, erwartetes Ergebnis,...)
Als Faustregel gilt aber, lieber JOIN als WHERE bzw. JOIN und WHERE SINNVOLL gemischt.
Bei alleiniger Verwendung von WHERE, erzeugt die Datenbank im schlimmsten Fall intern erstmal das kartesische Produkt und wendet erst dann deine WHERE Clausel an.
Bei deinem Beispiel sind das ca. 1.188.000(!) Datensätze, die irgendwo temporär im Datenbankserver erzeugt werden.
Umsetzung WHERE -> JOIN
Deine Anweisung
select a, b, c, d from x, y, z where a.x = b.y and c.y = d.z
(Deine Feldbezeichnungen sind vertauscht)
sieht dann so aus:
SELECT a, b, c, d
FROM x
JOIN z
ON x.a = y.b
JOIN z
ON y.c = z.d
WHERE nochirgendwas
ORDER BY nochwasanderes
praktisches Beispiel:
$sql="
SELECT aufgabe,datum_a,name_a,id,u_email,projekt
FROM $t_daten
LEFT JOIN $t_user
ON name_a = u_name
LEFT JOIN $t_pro
ON $t_daten.p_id = $t_pro.p_id
WHERE (datum_e = '' OR name_e = '')
ORDER BY projekt ASC,datum_a DESC
";
Grüße Oesi
(Dieser Beitrag wurde von oesi50 am 8. Aug 2003, 15:22 geändert)