वैसे यह वास्तव में करता है भले ही यह इस मामले में नहीं है। वास्तव में यह देखने के लिए कि क्या हो रहा है, आपको true
जोड़कर व्याख्या के "verbose" रूप को देखने की आवश्यकता है। :
db.t.find({item:"abc123",qty:{$gt:15}}).explain(true)
{
"cursor" : "BtreeCursor item_1",
"isMultiKey" : false,
"n" : 84,
"nscannedObjects" : 100,
"nscanned" : 100,
"nscannedObjectsAllPlans" : 201,
"nscannedAllPlans" : 304,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 2,
"nChunkSkips" : 0,
"millis" : 2,
"indexBounds" : {
"item" : [
[
"abc123",
"abc123"
]
]
},
"allPlans" : [
{
"cursor" : "BtreeCursor item_1",
"isMultiKey" : false,
"n" : 84,
"nscannedObjects" : 100,
"nscanned" : 100,
"scanAndOrder" : false,
"indexOnly" : false,
"nChunkSkips" : 0,
"indexBounds" : {
"item" : [
[
"abc123",
"abc123"
]
]
}
},
{
"cursor" : "BtreeCursor qty_1",
"isMultiKey" : false,
"n" : 0,
"nscannedObjects" : 101,
"nscanned" : 102,
"scanAndOrder" : false,
"indexOnly" : false,
"nChunkSkips" : 0,
"indexBounds" : {
"qty" : [
[
15,
Infinity
]
]
}
},
{
"cursor" : "Complex Plan",
"n" : 0,
"nscannedObjects" : 0,
"nscanned" : 102,
"nChunkSkips" : 0
}
],
संक्षिप्त करें, लेकिन अंतिम भाग वह है जिसे आप ढूंढ रहे हैं। जैसा कि मैनुअल में बताया गया है, "कॉम्प्लेक्स प्लान" की उपस्थिति का अर्थ है कि एक चौराहे का उपयोग किया जा रहा है।
{
"cursor" : "Complex Plan",
"n" : 0,
"nscannedObjects" : 0,
"nscanned" : 102,
"nChunkSkips" : 0
}
यहां एकमात्र मामला यह है कि जब इसे "देखा जा रहा है" तो इसे इस मामले में अनुकूलक द्वारा सबसे "इष्टतम" क्वेरी के रूप में नहीं चुना जा रहा है। तो ऑप्टिमाइज़र कह रहा है कि वास्तव में केवल एक चयनित इंडेक्स का उपयोग करने वाली योजना वह है जो सबसे अधिक प्रतिक्रियाशील फैशन में पूरी होगी।
इसलिए जब "चौराहे" पर विचार किया गया, तो यह "सर्वश्रेष्ठ फिट" नहीं था और एकल अनुक्रमणिका को चुना गया था।