这是查询(最大的表有大约 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 解决方案有效,但谁能解释它为什么有效?