Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
mySQL Join sehr langsam [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mySQL Join sehr langsam


 
SusiSorglos
08-07-2009, 16:09 
 
Hallo zusammen,

ich hab mal wieder ein kleines Problemchen wo ich nicht weiter komme.:motz:

Ich habe meine Tabelle etwas auseinander genommen und den Teil ich der ich die Dateinamen von Bildern gespeichert hatte in eine extra Tabelle ausgelagert.

Sieht genau so aus:
SELECT addis.`id`, `einrichtung1`, `einrichtung2`, `strasse`, `plz`, `ort`, `vorwahl`, `telefon`, docs3.filename
FROM addis
LEFT JOIN docs3 ON docs3.kid = addis.id AND kat = '1'
WHERE `level` >=1 AND `plz` LIKE '5%'
GROUP BY addis.id
ORDER by premium DESC, einrichtung1 ASC

Funktioniert auch... etwas unschön ist jedoch das mySQL 5.0.45 dafür ca. 10 Sekunden braucht. (PMA sagt ca. 5 Sekunden)
Der mysql Prozess unter Suse10 läuft in dieser Zeit auf 100% und zieht das ganze System runter.

Ich habe schon mit den verschiedenen JOINs rumgespielt aber nichts passendes gefunden.

Das "GROUP BY addis.id" musste ich einfügen da es zu jeder id mehrere Dateinamen geben kann diese aber jeweils nur 1 mal ausgegeben werden sollen.

Ohne GROUP läuft es allerdings auch nicht schneller.
Die Ausgabe unter PMA beinhaltet auch wirklich nur das wesentliche.

Kann mir jemand weiter helfen wie ich die Abfrage etwas optimieren könnte. Ohne JOIN rennt die Abfrage zu vollsten Zufriedenheit.

Cu Susi

 
TobiaZ
08-07-2009, 17:17 
 
Und du hast noch kein EXPLAIN ausgeführt? :rolleyes:

 
schmalle
09-07-2009, 11:38 
 
Poste mal die Tabellenstruktur bitte. Und setze konsequent überall den tabellenanmen vor das Feld, dass Du ansprichst. Zum Teil hast Du das ja schon gemacht.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:26 Uhr.