1. ホーム
  2. mongodb

mongodbで大量のレコードを扱うとページネーションが遅くなる

2023-10-26 11:34:39

質問

Mongoの1つのコレクションに300k以上のレコードがあります。

この非常にシンプルなクエリを実行すると

db.myCollection.find().limit(5);

数ミリ秒しかかかりません。

しかし、クエリでskipを使用すると

db.myCollection.find().skip(200000).limit(5)

何も返ってきません...何分も実行しても何も返ってきません。

どうすれば改善されますか?

どのように解決するのですか?

MongoDBから ドキュメント :

ページングコスト

残念ながら、スキップは (非常に) コストがかかることがあり、サーバーはデータのページを返し始める前に、コレクションの先頭またはインデックスからオフセット/スキップの位置まで歩く必要があります (制限)。ページ数が増加するにつれて、スキップはより遅く、より CPU に負担をかけるようになり、より大きなコレクションでは IO が束縛される可能性もあります。

範囲ベースのページングは、インデックスのより良い使用を提供しますが、特定のページに簡単にジャンプすることはできません。

あなたは自分自身に質問しなければなりません:どのくらいの頻度で40000番目のページが必要ですか?また この の記事もご覧ください。