mysql - 数千万のデータ ページングでオフセットが大きいことが判明した場合、速度を最適化するにはどうすればよいですか?
伊谢尔伦
伊谢尔伦 2017-05-18 10:48:01
0
2
885

mysqlを例にとると、一般にデータ量が比較的多い場合、ページング時のオフセットが大きくなり、クエリ効率が低下します。

たとえば、投稿に 200 万件のコメントがあり、各ページに 10 件が表示されている場合、ページ数は 200,000 になります。200,000 ページが取得された場合、データはどのように処理されるべきでしょうか? この要求を解決する良い方法はありますか?

例: NetEase Music、1 曲の最大コメント数は 140 万件以上、ページング速度は非常に優れています。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(2)
给我你的怀抱

まず、NetEase Music がデータを読み取る方法は間違いなく nosql を使用してデータを読み取ることだと思います。
もちろん、データ テーブルのアクセス頻度が高くない場合でも、データベースを直接読み取ることはできます。もちろん、mysql innodb ライブラリには不正な弱点があります。つまり、クエリするページ数が増えるほど効果が小さくなります。 。したがって、通常はクエリの効果を向上させるために id を使用します。古いクエリの使用法は、id > 100000、limit 10 です。これにより、インデックスが確実に使用されます。
もちろん、サブテーブルの形式を使用して単一テーブル内のデータを削減し、それによってクエリ効率を向上させることもできます

いいねを押す +0
PHPzhong

Redis を使用する場合は、ID をリストに保存し、次に Redis を使用してリストのフラグメントを取得し、そのフラグメント内の ID を mysql に使用して結果をクエリする必要があります。

もちろん、並べ替えを追加したい場合は、方法はありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート