ホームページ >データベース >mysql チュートリアル >ORDER BY を使用すると SQL クエリが遅いのはなぜですか?それを修正するにはどうすればよいですか?

ORDER BY を使用すると SQL クエリが遅いのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-04 04:20:11444ブラウズ

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

複雑なクエリで ORDER BY を使用するとパフォーマンスが低下する

複数の結合とサブクエリを含む複雑なクエリで、ORDER BY 句を追加すると、実行時間が大幅に遅くなります。この問題は、4 つのテーブルを含み、わずか 13 行を返すクエリで報告されています。クエリは 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。