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”查詢的情況下,不會產生期望的結果。
添加回答
舉報