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

¿Por qué un índice puede hacer que una consulta sea realmente lenta?

Porque aún necesita leer todos los datos del índice + archivo de datos. Ya que no estás usando ningún where condición:siempre tendrá el plan de consulta, que accede a todos los datos, fila por fila y no puede hacer nada con esto.

Si el rendimiento es importante para esta consulta y se realiza con frecuencia, sugeriría almacenar en caché los resultados en alguna tabla temporal y actualizarla cada hora (diariamente, etc.).

Por qué se vuelve más lento:porque en el índice los datos ya están ordenados y cuando mysql calcula el costo de la ejecución de la consulta, piensa que será mejor usar los datos ya ordenados, luego agruparlos y luego calcular los agregados. Pero no es en este caso.