Zum Inhalt springen

MySQL Timeout bei kompliziertem JOIN

Erstellt am 11. Oktober 2012 · 1 Antwort · letzte Antwort am 16. Oktober 2012

Tags: Frage

ToBe ·

Hallo Leute,

ich versuche einen (zugegeben etwas komplizierteren) Query abzusetzen und bekomme einen 500er Error. Habe nun versucht den Query über PHPMyAdmin auszufüren und dafür eine View anzulegen. Auch dort bekomme ich einen Timeout von der DB beim aufrufen der View. Er zeigt mir jedoch an, dass im Resultset der erstellten View etwas über 5000 Einträge sind.

Der Support meinte nach einigem hin und her, dass der Speicher der Session der DB-Connection voll läuft und dann der PHP-Prozess einen Timeout bekommt. Die einzige Lösung, die mir angeboten wurde ist auf ein höheres Paket zu wechseln.

Gibt es da vielleicht noch eine andere Lösung, oder mach ich bei meiner Abfrage irgendwas falsch?

Hier der Query: (tabellenname hier vereinfacht und ja die Tabelle table_c wird doppelt gejoint)

SELECT DISTINCT a.uid FROM table_a AS a
                 LEFT OUTER JOIN table_b AS b ON b.uid = a.b_uid
                 LEFT OUTER JOIN table_c AS c ON c.uid = b.c_uid
                 LEFT OUTER JOIN table_d_mm AS d_mm ON d_mm.uid_local = a.b_uid
                 LEFT OUTER JOIN table_e AS e ON d_mm.uid_foreign = e.uid
           	 LEFT OUTER JOIN table_c AS c2 ON e.c2_uid = c2.uid
           	    WHERE a.deleted = 0

Grüße und Danke schonmal :-)

Tobi

ToBe ·

Ok habe das "Problem" gelöst.

Die JOINS haben einfach zu viel Speicher gebraucht.
Um ein Upgrade auf ein teureres Paket zu vermeiden haben wir die Business-Logic verändert und den JOIN auf 3 Tabellen reduziert.

Funktioniert nun :-)