Hier ist die Abfrage (die größte Tabelle hat etwa 40.000 Zeilen)langsame Abfrage bei der Verwendung von ORDER BY ist
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
Wenn ich dies ausführen, führt es sehr schnell (etwa 0,05 Sekunden). Es gibt 13 Zeilen zurück.
Wenn ich eine ORDER BY
-Klausel am Ende der Abfrage (Reihenfolge von einer beliebigen Spalte) hinzufügen, dauert die Abfrage etwa 10 Sekunden.
Ich benutze diese Datenbank jetzt in der Produktion, und alles funktioniert gut. Alle meine anderen Fragen sind schnell.
Irgendwelche Ideen, was es sein könnte? Ich führte die Abfrage in MySQL Query Browser und von der Befehlszeile aus. Beide Orte waren mit der ORDER BY
tot langsam.
EDIT: Tolgahan ALBAYRAK Lösung funktioniert, aber kann jemand erklären, warum es funktioniert?
Warum funktioniert es? Eine Unterabfrage nimmt das Ergebnis in eine Ergebnismenge auf, und das Sortieren einer Ergebnismenge ist viel schneller, als wenn die Standardabfrageausführung auf dem Weg zählen würde. –