ホームページ >データベース >mysql チュートリアル >数百万のデータの下での MySQL ページングの問題
開発プロセスではページングを頻繁に使用しますが、その中核となるテクノロジーは、limit を使用してデータを読み取ることです。ページングに制限を使用するテスト プロセス中に、次のデータが取得されました:
select * from news order by id desc limit 0,10 耗时0.003秒 select * from news order by id desc limit 10000,10 耗时0.058秒 select * from news order by id desc limit 100000,10 耗时0.575秒 select * from news order by id desc limit 1000000,10 耗时7.28秒
データ量が大きい場合、MySQL のページング開始点を大きくするとクエリ速度が遅くなることがわかり、驚きました。 100 万件のクエリ速度はすでに 7 秒かかります。これは私たちには受け入れられない価値観です。
改善計画 1
select * from news where id > (select id from news order by id desc limit 1000000, 1) order by id desc limit 0,10
クエリ時間は 0.365 秒で、効率の向上は明らかです。 !原理は何ですか? ? ?
条件を使用して ID をフィルタリングしました。サブクエリ (select id from news order by id desc limit 1000000, 1) では、id フィールドのみをクエリしました。select * または select multiplefields と比較すると、大幅に節約できます。クエリのオーバーヘッドが大きくなります。
改善計画 2
連続 ID を持つシステムに適しており、非常に高速です。
select * from news where id between 1000000 and 1000010 order by id desc
条件や不連続な ID を含むクエリには適していません。高速!
以上が数百万のデータの下での MySQL ページングの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。