इंडेक्स सामान्य डेटाबेस सिस्टम में प्रश्नों को गति देने का एक विशिष्ट तरीका है। MongoDB और दस्तावेज़-आधारित डेटाबेस सिस्टम में कोई अंतर नहीं है। क्वेरी ऑप्टिमाइज़ेशन के लिए यह लेख MongoDB में इंडेक्स के बारे में जानकारी देता है।
मोंगो में इंडेक्स:
डिफ़ॉल्ट
_id एक ObjectId ऑब्जेक्ट है, 12-बाइट BSON प्रकार जो संग्रह के भीतर विशिष्टता की गारंटी देता है। ObjectId टाइमस्टैम्प, मशीन आईडी, प्रक्रिया आईडी, और एक प्रक्रिया-स्थानीय वृद्धिशील काउंटर के आधार पर उत्पन्न होता है।
एकल फ़ील्ड
सिंगल-फील्ड इंडेक्स और सॉर्ट ऑपरेशंस के लिए, इंडेक्स कुंजी का सॉर्ट ऑर्डर (यानी आरोही या अवरोही) कोई फर्क नहीं पड़ता क्योंकि मोंगोडीबी इंडेक्स को किसी भी दिशा में पार कर सकता है। सूचकांक का मूल्य सूचकांक का प्रकार है। उदाहरण के लिए, 1 आरोही क्रम को इंगित करता है और -1 अवरोही क्रम को निर्दिष्ट करता है।
db.friends.createIndex( { "name" : 1 } )
यौगिक क्षेत्र
यौगिक सूचकांक में सूचीबद्ध क्षेत्रों के क्रम का महत्व है। उदाहरण के लिए, यदि एक मिश्रित अनुक्रमणिका में {userid:1, Score:-1} होता है, तो अनुक्रमणिका पहले userid द्वारा क्रमबद्ध होती है और फिर, प्रत्येक userid मान के भीतर, स्कोर द्वारा क्रमबद्ध होती है।
db.products.createIndex( { "item": 1, "stock": 1 } )
एकाधिक कुंजी
MongoDB किसी सरणी में सामग्री को अनुक्रमित करने के लिए एकाधिक अनुक्रमणिका का उपयोग करता है। MongoDB सरणी के प्रत्येक तत्व के लिए अलग अनुक्रमणिका प्रविष्टियाँ बनाता है। आपको स्पष्ट रूप से एकाधिक कुंजी बनाने की आवश्यकता नहीं है।
टेक्स्ट इंडेक्स
एक संग्रह में अधिकतम एक टेक्स्ट इंडेक्स हो सकता है।
टेक्स्ट इंडेक्स के लिए प्रदर्शन लागत:
टेक्स्ट इंडेक्स बड़े हो सकते हैं। उनमें सम्मिलित किए गए प्रत्येक दस्तावेज़ के लिए प्रत्येक अनुक्रमित फ़ील्ड में प्रत्येक अद्वितीय पोस्ट-स्टेम्ड शब्द के लिए एक अनुक्रमणिका प्रविष्टि होती है।
टेक्स्ट इंडेक्स इंसर्शन थ्रूपुट को प्रभावित करेगा क्योंकि MongoDB को प्रत्येक नए स्रोत दस्तावेज़ के प्रत्येक अनुक्रमित फ़ील्ड में प्रत्येक अद्वितीय पोस्ट-स्टेम्ड शब्द के लिए एक इंडेक्स एंट्री जोड़नी होगी।
db.reviews.createIndex( { comments: "text" } )
हैश इंडेक्स
सामग्री को उसके हैश किए गए मान से क्वेरी करें। हैश एक फ़ंक्शन है जिसकी गणना इसके मूल्य से की जाती है। हैशेड मान को विशिष्ट मान के लिए डिज़ाइन किया गया है। एक फायदा यह है कि यह इतना तेज़ है, जो ओ (1) को अधिकतम लेता है लेकिन अनुबंध द्वारा सामान्य बाइनरी सर्च ट्री ओ (लॉग (एन)) लेगा। हैश सैद्धांतिक रूप से सामान्य बाइनरी सर्च ट्री कार्यान्वयन से तेज होगा। लेकिन नुकसान यह है कि हैश इंडेक्स परफॉर्मिंग रेंज सर्च सामान्य इंडेक्स की तुलना में बेहद धीमी होगी।
हैश इंडेक्स बनाने के लिए पायथन में यह एक उदाहरण है
db.active.createIndex( { a: "hashed" } )