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

MySQL-Rendimiento al ordenar en la columna calculada

En realidad, no puede optimizar esa consulta.

Está ordenando el resultado usando un valor calculado, por lo que no puede usar un índice. Si usa explain podría ver cómo se ejecuta su consulta y using temporary estará presente en el extra columna, lo que significa que todos los datos de su consulta se almacenan en una tabla temporal en la que se realiza el pedido.

No importa si solo desea las primeras 50 coincidencias en la consulta, primero tiene que obtener todos los datos, volcarlos en una tabla temporal, ordenar el resultado en esa tabla y luego devolverle las primeras 50 coincidencias.

Como puede suponer, esta es una operación que consume tiempo y memoria.

Entonces, su mejor opción es colocar un índice en la tabla para obtener todas las filas que necesita lo más rápido posible y luego procesarlas con php para obtener los datos que necesita.

Por cierto, echa un vistazo a la Guía de optimización de MySQL .