ホームページ >データベース >mysql チュートリアル >ORDER BY を使用すると SQL クエリが遅いのはなぜですか?それを修正するにはどうすればよいですか?
複雑なクエリで 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 サイトの他の関連記事を参照してください。