1

たとえば、2つのフィールドに対してMongoDBでカバーされたクエリを実行できますか?

db.collection.find( { _id: 1, a: 2 } )

次のような複合インデックスがなくても

db.collection.ensureIndex( { _id: 1, a: 1 } )

ただし、代わりに、_idのインデックスを1つだけ(デフォルトで取得)、フィールド「a」のインデックスをもう1つ持っています。

db.collection.ensureIndex( { a: 1 } )

つまり、2つのフィールドに対して対象クエリを実行するために、複合インデックスが必要なのか、各フィールドに1つずつ、2つの単一(つまり、複合ではない)インデックスのみが必要なのかを知りたいのです。

4

1 に答える 1

1

クエリは1つのインデックスのみを使用します。

あなたの例は_idあなたのインデックスの要素の1つとして示されていますか?_idコレクション内で一意である必要があるため、その他の複合インデックスを作成しても意味がありませ_idん。

代わりに持っていた場合:

db.collection.ensureIndex( { a: 1, b: 1 })

a次に、必要に応じて、独立して、または。を使用した複合インデックスとしてインデックスを使用できますb

于 2013-01-12T19:39:59.457 に答える