3 回答
TA贡献1810条经验 获得超5个赞
也许这会有所帮助:
SELECT * FROM (
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
) ORDER BY CourseID
TA贡献1828条经验 获得超4个赞
您从“ UserCourse ” 中选择,我认为这是课程和用户(多对多)之间的联接表。您应该在“ UserCourse”表中索引需要排序的列。
假设您要“ 按CourseID订购 ”,则需要在UserCourse表上对其进行索引。
通过联接表中不存在的任何其他列(即UserCourse)进行排序可能需要进一步对规范化和联接表上的索引进行优化,以提高速度。换句话说,您需要在联接表中具有该列的副本并为其建立索引。
PS Tolgahan Albayrak给出的答案虽然对这个问题是正确的,但在进行“ LIMIT x”查询的情况下,不会产生期望的结果。
添加回答
举报