MongoDbでは、私はインデックス{a:1,b:1}
を持っています。 別のインデックスを既に作成していますか?{a:1}
はすでにもう一方のインデックスに含まれていますか?MongoDB:2番目のインデックスは役に立たないのですか?
私のクエリは、パターンを次のとおりです。findOne({a:"...",b:"..."})
またはfind({a:"..."})
。
MongoDbでは、私はインデックス{a:1,b:1}
を持っています。 別のインデックスを既に作成していますか?{a:1}
はすでにもう一方のインデックスに含まれていますか?MongoDB:2番目のインデックスは役に立たないのですか?
私のクエリは、パターンを次のとおりです。findOne({a:"...",b:"..."})
またはfind({a:"..."})
。
私はあなたのためにprefixes
の別の索引{a:1}
を作成する必要はありませんだと思います。
インデックスのプレフィックスはインデックスフィールドの開始サブセットです。例えば、以下の化合物の指標を考慮してください。
{ "item": 1, "location": 1, "stock": 1 }
インデックスは、次のインデックス接頭辞を持っています
{ item: 1 } { item: 1, location: 1 }
複合インデックスのために、MongoDBはインデックスプレフィックスのクエリをサポートするためにインデックスを使用することができます。このように、MongoDBは、以下のフィールドにクエリのインデックスを使用することができます。
item
- フィールド、
item
- フィールドと
location
フィールド、item
- フィールドと
location
フィールドとstock
フィールド。
そして、複合インデックスを作成するには、[1]、より効率的です。
MongoDBはインデックス全体またはインデックスプレフィックスのいずれかの交差を使用できます[2]。
MongoDBのドキュメントCreate a compound indexをチェックしてください。
次の操作項目と在庫フィールドの昇順インデックス作成:すべてのインデックスフィールドに一致するクエリをサポートすることに加えて
db.products.createIndex({ "item": 1, "stock": 1 })
を 化合物インデックスがで一致クエリをサポートすることができ接頭辞はインデックスフィールドの です。複合インデックスのために
db.products.find({ item: "Banana" })
db.products.find({ item: "Banana", stock: { $gt: 5 } })
、MongoDBのは、インデックスの接頭辞にクエリをサポートするために、インデックスを使用することができますですは、インデックスが としてitem
フィールド上のクエリだけでなく、両方item
とstock
フィールドをサポートしています。ところで
、あなたは複合インデックスを作成した場合:
{ "item": 1, "location": 1, "stock": 1 }
MongoDBは、次のフィールドにクエリのインデックスを使用することができます。
しかし、item
とstock
では効率的ではありません。
これが役に立ちます。
これは本当に私の質問に答えるものではありませんが、あなたのリンクはそうです。 {x:1、y:1、z:1}次のインデックスがサポートするクエリをサポートできます。{x:1}、{x:1、y:1} " – RainingChain
@RainingChainそのために、私は自分の答えを更新しました。 – McGrady