सूचकांक में फ़ील्ड का क्रम मायने रखता है; आपके खोजने और क्रमबद्ध करने के उदाहरण के लिए सबसे अच्छा यौगिक सूचकांक वास्तव में होगा:
db.test.ensure_index([("xxx",1),("_id",-1)])
चूंकि आपका खोज मानदंड 'xxx' फ़ील्ड पर है, इसलिए इस फ़ील्ड को अनुक्रमणिका में पहले रखने से _id
द्वारा खोज करने की तुलना में अधिक परिणाम प्राप्त होंगे और फिर अपने xxx
. से मेल खाने वाले दस्तावेज़ों को फ़िल्टर करना मानदंड।
यदि आप n
. को देखें तो allPlans
. में क्वेरी ऑप्टिमाइज़र द्वारा विचार की गई प्रत्येक योजना के लिए नंबर , BtreeCursor xxx_1
index वास्तव में सबसे अधिक परिणाम देता है (34)। अन्य इंडेक्स 9, 10, और 16 परिणाम लौटाते हैं .. इसलिए दिए गए खोज मानदंड के लिए कम कुशल होंगे।
अनुक्रमणिका अनुकूलन के बारे में अधिक जानकारी के लिए, यह लेख बहुत उपयोगी है:MongoDB कंपाउंड इंडेक्स का अनुकूलन ए> ।