Suppse複合インデックスの使用に重要な事項のシーケンスをいMongoDBのクエリは、私は次のようにインデックスを作成し
db.collection.find({propB:'x', propC: 'y', propA:'z'})
は、クエリエンジンの使用をモンゴます上記で作成されたインデックス。 クエリの作成中に複合インデックスを使用する際にキーの順序が重要ですか?
Suppse複合インデックスの使用に重要な事項のシーケンスをいMongoDBのクエリは、私は次のようにインデックスを作成し
db.collection.find({propB:'x', propC: 'y', propA:'z'})
は、クエリエンジンの使用をモンゴます上記で作成されたインデックス。 クエリの作成中に複合インデックスを使用する際にキーの順序が重要ですか?
のキーの順番はです。MongoDBは照会されたすべてのプロパティーを調べ、適切なインデックスを見つけるのに十分です。
ただし、インデックスので定義されているキーの順序は問題ありません。複合インデックスは、インデックスドキュメントで定義されている順序でmatch queries against any prefix of its keysに使用できます。したがって、上記のインデックスを使用して{propA: 'x', propB: 'y'}
のようなクエリには回答できますが、{propB: 'y', propC: 'z'}
のようなクエリには答えられません。
explain()
を使用して、特定のクエリに使用するインデックスMongoDBを特定できます。
アビシュの答えに追加するには、複数のフィールドで構成されるこのようなインデックスを複合インデックスといいます。複合インデックスにリストされているフィールドの順序は非常に重要です。理由は次のとおりです。
インデックスには、最初のフィールドの値によって最初にソートされたドキュメントへの参照が含まれ、最初のフィールドの各値内で、2番目のフィールドの値によってソートされ、2番目のフィールドの各値3番目のフィールドの値でソートされます。
例えば、あなたの場合、インデックスはpropAフィールドの値によって最初にソートされたドキュメントへの参照を含み、propAフィールドの各値内ではpropBフィールドの値によってソートされ、propBの各値フィールドは、propCフィールドの値でソートされます。
したがって、次ながらクエリが指定されたインデックスを使用することに注意してください。db.collection.find({propB
以下缶」指定されたインデックスを使用してください: