ORDER BY 操作の遅いクエリの最適化
ORDER BY の使用時にクエリが遅いという問題が発生した場合は、次の理由が考えられます。 :
1. インデックスがないか、不適切です。
ORDER BY で使用される列にインデックスが作成されていることを確認してください。インデックスが存在しないか不適切な場合、データベースはテーブル全体のスキャンを強制的に実行することになり、パフォーマンスが大幅に低下します。
2. サブクエリの最適化
ネストされたサブクエリの最適化を注意深く確認します。サブクエリが適切なインデックスを使用し、WHERE 句で等価比較 (=) を使用していることを確認してください。
3. LIMIT を適切に使用します
クエリが少数の結果のみを返す必要がある場合は、LIMIT 句を使用して返されるレコードの数を制限します。これにより、特に 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 を使用して遅いクエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。