[GastForen Programmierung/Entwicklung PHP und MySQL

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

concat macht Probleme ab einer bestimmten Datenmenge

oesi50
  
Beiträge gesamt: 2315

8. Aug 2003, 14:06
Bewertung:

gelesen: 2495

Beitrag als Lesezeichen
@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)
Dieser Beitrag wurde nicht geändert.