Cómo optimizar un query SQL de MySQL
Separar el SELECT del FROM del WHERE y del ORDER BY
Separar cada columna en una linea
Ejecutarlo en MySQLBrowser o WorkBench y ver el tempo que tarda. Ir sacando de a poco las columnas para ver cual es o son las columnas que tardan
Una vez detectada cual es la columna que tarda dejar el SQL solo con esa columna.
Ver el FROM y WHERE de esa columna (siendo un subquery) y ver los indices de las tablas del FROM: show indexes from tabla
Crear el indice o indices que se necesiten:
create index tabla_columnas on tabla(columnas)
ejemplo:
create index cmrel_relacionadocontacto on cmrel(relacionado,contacto)
Volver a ejecutar el SQL a optimizar para ver si se ejecuta mas rapido
Enviar a Roberto por email el o los create indexes ejecutados para optimizar