mysqlを例にとると、一般にデータ量が比較的多い場合、ページング時のオフセットが大きくなり、クエリ効率が低下します。
たとえば、投稿に 200 万件のコメントがあり、各ページに 10 件が表示されている場合、ページ数は 200,000 になります。200,000 ページが取得された場合、データはどのように処理されるべきでしょうか? この要求を解決する良い方法はありますか?例: NetEase Music、1 曲の最大コメント数は 140 万件以上、ページング速度は非常に優れています。
给我你的怀抱2017-05-18 10:50:01
まず、NetEase Music がデータを読み取る方法は間違いなく nosql を使用してデータを読み取ることだと思います。
もちろん、データ テーブルのアクセス頻度が高くない場合でも、データベースを直接読み取ることはできます。もちろん、mysql innodb ライブラリには不正な弱点があります。つまり、クエリするページ数が増えるほど効果が小さくなります。 。したがって、通常はクエリの効果を向上させるために id を使用します。古いクエリの使用法は、id > 100000、limit 10 です。これにより、インデックスが確実に使用されます。
もちろん、サブテーブルの形式を使用して単一テーブル内のデータを削減し、それによってクエリ効率を向上させることもできます
PHPz2017-05-18 10:50:01
Redis を使用する場合は、ID をリストに保存し、次に Redis を使用してリストのフラグメントを取得し、そのフラグメント内の ID を mysql に使用して結果をクエリする必要があります。
もちろん、並べ替えを追加したい場合は、方法はありません。