ホームページ  >  に質問  >  本文

mysql - 数千万のデータ ページングでオフセットが大きいことが判明した場合、速度を最適化するにはどうすればよいですか?

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

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

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

伊谢尔伦伊谢尔伦2712日前837

全員に返信(2)返信します

  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:50:01

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

    返事
    0
  • PHPz

    PHPz2017-05-18 10:50:01

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

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

    返事
    0
  • キャンセル返事