Aquí está la consulta (la tabla más grande tiene alrededor de 40.000 filas)consulta lenta cuando se utiliza ORDER BY
SELECT
Course.CourseID,
Course.Description,
UserCourse.UserID,
UserCourse.TimeAllowed,
UserCourse.CreatedOn,
UserCourse.PassedOn,
UserCourse.IssuedOn,
C.LessonCnt
FROM
UserCourse
INNER JOIN
Course
USING(CourseID)
INNER JOIN
(
SELECT CourseID, COUNT(*) AS LessonCnt FROM CourseSection GROUP BY CourseID
) C
USING(CourseID)
WHERE
UserCourse.UserID = 8810
Si funciono esto, se ejecuta muy rápidamente (.05 segundos aproximadamente). Devuelve 13 filas.
Cuando agrego una cláusula ORDER BY
al final de la consulta (ordenando por cualquier columna) la consulta tarda unos 10 segundos.
Estoy usando esta base de datos en producción ahora, y todo está funcionando bien. Todas mis otras consultas son rápidas.
¿Alguna idea de lo que podría ser? Ejecuté la consulta en el buscador de consultas de MySQL y desde la línea de comandos. En ambos lugares estaba muerto lento con el ORDER BY
.
EDIT: La solución Tolgahan ALBAYRAK funciona, pero ¿alguien puede explicar por qué funciona?
¿Por qué funciona? una subconsulta toma el resultado en un conjunto de resultados, y ordenar un conjunto de resultados es mucho más rápido que contar con la ejecución de la consulta predeterminada para ordenar en el camino. –