ホームページ > データベース > mysql チュートリアル > LIMIT オフセットが大きい MySQL クエリが非常に遅いのはなぜですか?

LIMIT オフセットが大きい MySQL クエリが非常に遅いのはなぜですか?

Linda Hamilton
リリース: 2024-12-13 01:17:09
オリジナル
558 人が閲覧しました

Why Are MySQL Queries with Large LIMIT Offsets So Slow?

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.

このシナリオを最適化するには、別のアプローチの使用を検討してください:

  1. フェッチされた行セットの最後の ID を保存します (例: lastId = 530)。
  2. 条件 WHERE id > を含むようにクエリを変更します。 lastId.
SELECT * FROM large WHERE `id` > lastId LIMIT 0, 30
ログイン後にコピー

ゼロ オフセットを一貫して維持することにより、反復で大量のデータをフェッチする場合でも、クエリは常に最適な速度で実行されます。

以上がLIMIT オフセットが大きい MySQL クエリが非常に遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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