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番目のページが必要ですか?また この の記事もご覧ください。
関連
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] 同じデータベース内でコレクションをコピーする最も速い方法は何ですか?
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] MongoDBとその逆の上にCouchDBを使用するとき
-
[解決済み] mongodbの最後のN個のレコードを取得する方法は?
-
[解決済み] 日付に基づいたクエリを返す
-
[解決済み】MongoDB: 1つのフィールドですべてのドキュメントを更新する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SocketException: アドレスはすでに使用中です。
-
[解決済み] MongoDB Compass フィルタ (クエリ)
-
[解決済み] Mongodbでキーに基づいた重複を削除する方法は?
-
[解決済み] MongoDBのデフォルトのユーザーとパスワードは何ですか?
-
[解決済み] MongoDB: 大文字小文字を区別しないクエリを作ることはできますか?
-
[解決済み】MongoDB コレクションの変更をリッスンする方法は?
-
[解決済み】RedisはmongoDBよりどれくらい速いのか?
-
[解決済み] MongoDb の 2 つのフィールドを比較するクエリ条件
-
[解決済み] MongoDBコンテナの起動時にDBを作成するには?
-
[解決済み] mongoがどのポートをリッスンしているか、mongoシェルから見るにはどうしたらいいですか?