Hallo Bruno,
folgender SQL-Query hatte vor kurzem den mySQL 5.0-Server lahm gelegt:
dieser ganz bestimmt nicht. Wenn doch, überdenke Deine Bezeichner!
Sprich: Du hast das Problem fast bis zur Unkenntlichkeit verstümmelt. Das ist keine besonders gute Idee.
SELECT SQL_CALC_FOUND_ROWS tab1.col1, col2, col3 FROM tab1
-- aus welchen Tabellen sind col2 und col3?
LEFT JOIN tab2 ON tab1.id=tab2.tab1_id
LEFT JOIN tab3 ON tab2.id=tab3.tab2_id
LEFT JOIN tab4 ON tab3.id=tab4.tab3_id
-- warum dreimal LEFT JOIN? Alle aufeinander aufbauend. Da gibt es keine
-- Chance, die Auswertungsreihenfolge umzustellen. Bist Du Dir ganz sicher, -- dass Du keine INNER JOINs verwenden kannst?
WHERE tab1.col1 LIKE 'foo'
-- ist der Mustervergleich wirklich nötig. Reichte nicht das Gleichheitszeichen?
ORDER BY col1 ASC, col2 DESC, col3 ASC LIMIT 0,10
\-- LIMIT kann gelegentlich tödlich für die Performance sein :-)
\-- könnte für filesort verantwortlich sein.
Freundliche Grüße
Vinzenz