私はそのようなタイプのクエリをたくさん実行しています:
db.mycollection.find({a:{$gt:10,$lt:100}, b:4}).sort({c:-1, a:-1})
高速化するには、どのようなインデックスを使用すればよいですか? {a:1, b:1}
と の両方が必要だと思いますよ{c:-1, a:-1}
ね?または、これらのインデックスは、パフォーマンスの向上なしに何らかの形で互いに干渉しますか?
編集:私にとって実際の問題は、多くのクエリをループで実行することです。それらのいくつかは狭い範囲で実行され、他のクエリは広い範囲で実行されます。index を に{a:1, b:1}
設定すると、小さなチャンクが非常に迅速に選択されますが、大きな範囲になると、「インデックスのない sort() にはデータが多すぎます」というエラーが表示されます。それ以外の場合、 index を に配置する{c:-1, a:-1}
と、エラーは発生しませんが、小さなチャンク (およびそれらのチャンクが多い) の処理ははるかに遅くなります。では、狭い範囲の選択の速さを維持しながら、大量のデータでエラーが発生しないようにするにはどうすればよいでしょうか?
問題があれば、Python の pymongo を介してクエリを実行します。