sql >> Base de Datos >  >> RDS >> Mysql

Usar índice, usar temporal, usar clasificación de archivos:¿cómo solucionar esto?

Bueno, el doc da las razones exactas por las que aparecerá "Uso temporal":

Las tablas temporales se pueden crear bajo condiciones como estas:

Si hay una cláusula ORDER BY y una cláusula GROUP BY diferente, o si ORDER BY o GROUP BY contiene columnas de tablas distintas a la primera tabla en la cola de unión, se crea una tabla temporal.

DISTINCT combinado con ORDER BY puede requerir una tabla temporal.

Si usa la opción SQL_SMALL_RESULT, MySQL usa una tabla temporal en memoria, a menos que la consulta también contenga elementos (descritos más adelante) que requieren almacenamiento en disco.

Un escaneo rápido muestra que sufres del #1.

Y este blog de 2009 dice que "usar filesort" significa que la ordenación no se puede realizar con un índice. Dado que está ordenando por un campo calculado, eso también será cierto.

Entonces, eso es lo que está "mal".