Ecco la query (la tabella più grande ha circa 40.000 righe)query lente quando si utilizza 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
Se corro questo, esegue molto rapidamente (.05 secondi circa). Restituisce 13 righe.
Quando aggiungo una clausola ORDER BY
alla fine della query (ordinando per qualsiasi colonna) la query impiega circa 10 secondi.
Attualmente sto utilizzando questo database in produzione e tutto funziona correttamente. Tutte le mie altre domande sono veloci.
Qualche idea di cosa potrebbe essere? Ho eseguito la query nel browser Query di MySQL e dalla riga di comando. Entrambi i posti è stato lento con il ORDER BY
.
MODIFICA: Tolgahan La soluzione ALBAYRAK funziona, ma qualcuno può spiegare perché funziona?
Perché funziona? una sottoquery prende il risultato in una serie di risultati e l'ordinamento di un set di risultati è molto più rapido di quello che l'esecuzione della query predefinita ha il conteggio in ordine lungo la strada. –