3 回答

TA貢獻(xiàn)1810條經(jīng)驗 獲得超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貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
您從“ UserCourse ” 中選擇,我認(rèn)為這是課程和用戶(多對多)之間的聯(lián)接表。您應(yīng)該在“ UserCourse”表中索引需要排序的列。
假設(shè)您要“ 按CourseID訂購 ”,則需要在UserCourse表上對其進(jìn)行索引。
通過聯(lián)接表中不存在的任何其他列(即UserCourse)進(jìn)行排序可能需要進(jìn)一步對規(guī)范化和聯(lián)接表上的索引進(jìn)行優(yōu)化,以提高速度。換句話說,您需要在聯(lián)接表中具有該列的副本并為其建立索引。
PS Tolgahan Albayrak給出的答案雖然對這個問題是正確的,但在進(jìn)行“ LIMIT x”查詢的情況下,不會產(chǎn)生期望的結(jié)果。
添加回答
舉報