実行時間が遅い大きなテーブルに対する MySQL クエリの最適化
MySQL クエリには効率的なインデックスがないため、実行に 1 分以上かかりますデータの取得を最適化します。テーブルの巨大なサイズ、特に 100 万レコードを超えると、問題がさらに悪化します。
ID による並べ替えを伴うクエリを高速化するには、ID 列でテーブルのインデックスを作成することが重要です。ただし、提供された情報によると、インデックス作成だけでは十分ではないようです。
クエリのパフォーマンスを向上させるためのいくつかの提案があります:
WHERE 句を含む範囲クエリを使用する
LIMIT を使用して特定の範囲のレコードを取得する代わりに、関係演算子を含む WHERE 句を利用することを検討してください。たとえば、次のクエリは範囲クエリを使用して ID 値が 499501 以上のレコードを選択し、結果を 500 行に制限します。
select * from `ratings` where id >= 499501 limit 500;
このクエリは、インデックス付きのクエリを利用するため、大幅に高速に実行されます。 id 列を使用して、目的のレコードを効率的に見つけます。
クエリの説明計画
問題をさらにトラブルシューティングするには、EXPLAIN クエリを実行してクエリ実行計画についての洞察を取得します。これにより、クエリのタイプ、使用されているインデックス、およびスキャンされる推定行数に関する詳細が得られます。
explain select * from `ratings` where id >= 499501 limit 500;
デッドロックを除外する
デッドロックは次の場合に発生します。 2 つ以上の同時トランザクションがお互いにロックを解放するのを待ち、事実上どちらかのトランザクションの進行を妨げます。提供された情報では考えられる原因としてデッドロックが示唆されていませんが、検討する価値はあります。
以上が大きなテーブルに対する MySQL クエリが非常に遅いのはなぜですか? 最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。