Здесь запрос (наибольшая таблица содержит около 40 000 строк)
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
Если я запустил это, он выполняется очень быстро (приблизительно 0,05 секунды). Он возвращает 13 строк.
Когда я добавляю предложение ORDER BY
в конце запроса (упорядочение по любому столбцу), запрос занимает около 10 секунд.
Теперь я использую эту базу данных в производстве, и все работает нормально. Все мои другие запросы быстрые.
Любые идеи о том, что это может быть? Я выполнил запрос в MySQL Query Browser и из командной строки. Оба места были медленными с помощью ORDER BY
.
EDIT: Решение Tolgahan ALBAYRAK работает, но может ли кто-нибудь объяснить, почему он работает?