ホームページ >データベース >mysql チュートリアル >数百万のデータの下での MySQL ページングの問題

数百万のデータの下での MySQL ページングの問題

藏色散人
藏色散人転載
2019-04-17 17:23:343768ブラウズ

開発プロセスではページングを頻繁に使用しますが、その中核となるテクノロジーは、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 サイトの他の関連記事を参照してください。

声明:
この記事はhcoder.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。