ホームページ > データベース > mysql チュートリアル > ORDER BY を使用して遅いクエリを最適化するにはどうすればよいですか?

ORDER BY を使用して遅いクエリを最適化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-01 01:05:12
オリジナル
916 人が閲覧しました

How Can I Optimize Slow Queries Using ORDER BY?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート