Por empezar, ordenemos esa consulta como para que sea entendible:
Código MySQL:
Ver original m.id,
m.title,
m.module,
m.content,
m.showtitle,
m.params,
mm.menuid
LEFT JOIN qq3v9_extensions
AS e
ON e.element
= m.module
AND e.client_id
= m.client_id
m.published = 1
AND (m.publish_up
= '0000-00-00 00:00:00' OR m.publish_up
<= '2013-01-30 16:30:16') AND (m.publish_down
= '0000-00-00 00:00:00' OR m.publish_down
>= '2013-01-30 16:30:16') AND (mm.menuid
= 0 OR mm.menuid
<= 0) AND m.language
IN ('en-GB','*')
Ahora podemos ver que es una consulta que tiene el potencial de generar un
producto cartesiano, ya que hace un fullscan por cada tabla para poder realizar esas comparaciones, y si las mismas son demasiado grandes el resultado es.. calamitoso.
Es uno de los problemas de el LEFT JOIN, pero también de operaciones de tipo "<=". Cualquier condición con operadores que impliquen inecuaciones genera un fullscan.
A esto hay que sumarle, por lo menos, que ORDER BY es una de las cláusulas que más asesina la performance, en especial cuando la respuesta de la consulta ya es un producto cartesiano.
Creo que deberás optimizar eso.