第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用ORDER BY時查詢速度慢

使用ORDER BY時查詢速度慢

繁星點點滴滴 2019-11-19 10:04:47
這是查詢(最大的表約有40,000行)SELECT  Course.CourseID,  Course.Description,  UserCourse.UserID,  UserCourse.TimeAllowed,  UserCourse.CreatedOn,  UserCourse.PassedOn,  UserCourse.IssuedOn,  C.LessonCntFROM  UserCourseINNER JOIN  CourseUSING(CourseID)INNER JOIN(  SELECT CourseID, COUNT(*) AS LessonCnt FROM CourseSection GROUP BY CourseID) CUSING(CourseID)WHERE   UserCourse.UserID = 8810如果運行此命令,它將很快執(zhí)行(大約.05秒)。它返回13行。當(dāng)我ORDER BY在查詢末尾添加一個子句(按任意列排序)時,查詢大約需要10秒鐘。我現(xiàn)在正在生產(chǎn)中使用此數(shù)據(jù)庫,并且一切正常。我所有其他查詢都很快。有什么想法嗎?我在MySQL的查詢?yōu)g覽器中并從命令行運行了查詢。兩個地方都死了ORDER BY。編輯: Tolgahan ALBAYRAK解決方案有效,但是誰能解釋為什么它有效?
查看完整描述

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


查看完整回答
反對 回復(fù) 2019-11-19
?
明月笑刀無情

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é)果。


查看完整回答
反對 回復(fù) 2019-11-19
  • 3 回答
  • 0 關(guān)注
  • 2149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號