LIMIT オフセットの増加が MySQL クエリ速度に与える影響
ORDER BY と組み合わせて LIMIT オフセットを増加させて大規模な MySQL テーブルをクエリする場合、ユーザーはクエリ速度の顕著な低下に遭遇する可能性があります。これは、テーブルのレコード数が 1,600 万を超える場合、またはテーブルのサイズが約 2 GB である場合に特に顕著です。
たとえば、オフセットが小さい次のクエリは、オフセットが大きいクエリよりも大幅に高速に実行されます。
SELECT * FROM large ORDER BY `id` LIMIT 0, 30
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
どちらのクエリも 30 行しか取得しませんが、後者のクエリは ORDER のオーバーヘッドが無視できるにもかかわらず、かなり時間がかかります。 BY.
このシナリオを最適化するには、別のアプローチの使用を検討してください:
SELECT * FROM large WHERE `id` > lastId LIMIT 0, 30
ゼロ オフセットを一貫して維持することにより、反復で大量のデータをフェッチする場合でも、クエリは常に最適な速度で実行されます。
以上がLIMIT オフセットが大きい MySQL クエリが非常に遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。