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

藏色散人
リリース: 2019-04-17 17:23:34
転載
3483 人が閲覧しました

開発プロセスではページングを頻繁に使用しますが、その中核となるテクノロジーは、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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!