MySQL: Performance bei JOIN-Befehl
am 20.05.2005 10:43:24 von Oliver TreckHallo Programmier.
Hab hier mal ne Frage an eure Erfahrungswerte.
Habe vor kurzem bei einer Anwendung, die ich für einen Kunden programmiert
habe, festgestellt, dass eine SQL-Abfrage über 30 Sekunden gedauert hat, die
nur einen Join-Befehl beinhaltet hat. Das ist natürlich viel zu lang, für
eine Webanwendung , die schnell marschieren muss.
In Tabelle1 haben sich im laufe der Zeit gut 3000 Datensätze angesammelt,
während die zweite, mit Join verknüpfte Tabelle, ca. 8000 Datensätze hat.
Es sind auch nicht gerade riesige Tabellen mit nur durchschnittlich 15-20
Spalten.Belegter Speicher zeigt mir MySQL gerade mal 361kb für Tabelle1 bzw.
385kb für Tabelle2 an.
Trotzdem hat die Abfrage mehrfach getestet über 30sek gedauert. Obwohl ich
die Tabellen optimiert habe.
Nun zu meiner eigentlichen Frage:
Liegt das an der MySQL-Version (beim Kunden 3.2x mit Standard-Konfig) und
ist bei den neueren Versionen verbessert worden, dass solche Abfragen
schneller Funktionieren oder liegt das allgemein an dem JOIN-Befehl, dass
dieser die Resourcen von MySQL so stark auslastet.
Bei dem Kunden war das jetzt nicht so wild, da er diese Abfrage eh nur alle
2 Jahre ausführt. Ich habe aus dieser Abfrage nun 2 einzelne gemacht, wobei
die Verknüpfung nun von PHP realisiert wird. Nun klappt das ganze Skript in
1 sekunde.
Da bei mir allerdings in Zukunft ein größeres Projekt anliegt, wobei solche
Erfahrungswerte sicherlich hilfreich wären, wollte ich vorher mal fragen, ob
es vielleicht sinnvoller wäre solche JOIN Befehle der Performace wegen ganz
zu umgehen.
Für eure Erfhrungen und Hinweise bin ich euch sehr dankbar.
Vielen Dank und schöne Grüße,
Oliver Treck