MySQL での高い OFFSET 値によるクエリ パフォーマンスの低下
クエリの実行が遅い原因は、過剰な CPU 使用率またはメモリ消費であることがよくあります。ただし、場合によっては、LIMIT オフセットが高い一見無害なクエリでも、重大なパフォーマンスのボトルネックが発生する可能性があります。
問題: OFFSET の増加はクエリ速度に影響します
検討してください1,600 万を超えるレコードを含む大規模なテーブルを含むシナリオ。
SELECT * FROM large ORDER BY `id` LIMIT 0, 30
のようなクエリは、
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
よりもかなり高速に実行されます。どちらのクエリも同じ数のレコードを取得しますが、後者のクエリのオフセット値 10,000 によりパフォーマンスが低下します。
を理解する問題
MySQL は、データを取得するときにインデックス スキャンまたはフル テーブル スキャンを使用します。オフセット値が適用されると、MySQL はテーブルの一部をスキャンして結果セットの開始点を取得する必要があります。オフセット値が増加すると、テーブル スキャンがより広範囲になり、実行時間が長くなります。
最適化ソリューション: 高い OFFSET 値を避ける
このようなクエリを最適化するには、次のことを避けてください。高い OFFSET 値を使用します。代わりに、別のアプローチを使用することを検討してください:
以上がMySQL クエリで OFFSET 値が大きいとなぜ速度が非常に遅くなるのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。