Вот запрос (в самой большой таблице около 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 и из командной строки. В обоих местах было очень медленно с ORDER BY
.
РЕДАКТИРОВАТЬ: Tolgahan ALBAYRAK решение работает, но кто-нибудь может объяснить, почему оно работает?