1

重複の可能性:
mongo の大量のレコードでページネーションが遅い

簡単なテストを作成しました:

> db.t.count()
7852054
> db.t.find().skip( 1500000 ).limit(1)
{ "_id" : ObjectId("4fc078aa82618808f416e372"), "value" : 1500000 }
>

巨大なコレクションでは、skip と limit を使用してページングを行うには時間がかかりすぎます。

それを行うより良い方法はありますか?

4

1 に答える 1

3

ドキュメントを調べましたか?

残念ながら、スキップは(非常に)コストがかかる可能性があり、サーバーがデータのページを返し始める前に、コレクションまたはインデックスの先頭からオフセット/スキップ位置に到達する必要があります(制限)。ページ数が増えると、コレクションが大きくなると、スキップが遅くなり、CPUが集中し、場合によってはIOバウンドになります。

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

于 2012-05-26T14:30:54.163 に答える