首頁 > 資料庫 > mysql教程 > 為什麼使用 ORDER BY 時我的 SQL 查詢速度很慢,要如何修復它?

為什麼使用 ORDER BY 時我的 SQL 查詢速度很慢,要如何修復它?

Barbara Streisand
發布: 2024-12-04 04:20:11
原創
489 人瀏覽過

Why is my SQL query slow with ORDER BY, and how can I fix it?

在複雜查詢中使用ORDER BY 時效能緩慢

在具有多個聯接和子查詢的複雜查詢中,加入ORDER BY 子句可以導致執行時間明顯變慢。已在包含四個表且僅傳回 13 行的查詢中報告了此問題。沒有 ORDER BY 子句時查詢運作很快,但加入 ORDER BY 子句後變得緩慢。

解決方案

要解決此效能問題,建議將查詢包裝在子查詢並將 ORDER BY 子句應用於外部查詢。以下是修改後的查詢:

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;
登入後複製

說明

此解決方案有效的原因是它允許優化器獨立於 ORDER BY 操作來評估子查詢。這會產生更有效率的執行計劃,並且不會受到緩慢的 ORDER BY 操作的影響。

以上是為什麼使用 ORDER BY 時我的 SQL 查詢速度很慢,要如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板