MySQL ステートメントの実行時間が過剰です
約 100 万レコードを含む大規模なデータベースでクエリを実行しようとしたときに、実行時間が長くなることが発生しました。具体的には、「評価」テーブルからレコードを取得するクエリが特に遅かったです:
select * from `ratings` order by id limit 499500, 500
「id」列にインデックスを使用しているにもかかわらず、問題は解決しませんでした。ただし、テーブル サイズを 10,000 レコードに削減すると、クエリ時間が大幅に短縮されました。
説明:
「EXPLAIN」ステートメントを使用してクエリ プランを調べたところ、元のクエリではフル テーブル スキャンが使用されており、実行が非効率になっていたことが明らかになりました。対照的に、「where」句を追加すると、より効率的な範囲インデックス スキャンが利用され、パフォーマンスが大幅に向上しました。
select * from `ratings` where id>=499501 limit 500
考慮事項:
結果をフィルタリングするための「where」句は、適切なインデックスを利用することでクエリのパフォーマンスを大幅に向上させることができます。
データベース内でデッドロックが発生していないことを確認することが重要であり、これによりクエリの実行が遅くなる可能性もあります。
以上がインデックスがあるにもかかわらず、MySQL クエリが非常に遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。