MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

अनुक्रमणिका के साथ खोज समय> अनुक्रमणिका के बिना

इस मामले में, अनुक्रमणिका मदद नहीं करती है क्योंकि आपके मिलान परिणाम सेट में लगभग संपूर्ण संग्रह होता है। इसका मतलब है कि इसे रैम में लोड करना होगा और अधिकांश इंडेक्स को पार करना होगा, साथ ही रैम में लोड करना होगा और दस्तावेजों को स्वयं पार करना होगा।

सूचकांक के बिना, यह सिर्फ एक टेबल स्कैन करेगा, प्रत्येक दस्तावेज़ का निरीक्षण करेगा और मिलान होने पर वापस आ जाएगा।

ऐसे मामलों में जहां एक क्वेरी लगभग पूरे संग्रह को लौटाने वाली है, एक अनुक्रमणिका सहायक नहीं हो सकती है।

.limit() जोड़ने से क्वेरी तेज हो जाएगी। आप क्वेरी ऑप्टिमाइज़र को .hint():

. के साथ इंडेक्स का उपयोग नहीं करने के लिए बाध्य कर सकते हैं
db.collection.find().hint({$natural:1})

आप चयनित फ़ील्ड को केवल आपके द्वारा अनुक्रमित किए गए फ़ील्ड तक सीमित करके सीधे इंडेक्स से ही परिणाम मान प्रदान करने के लिए क्वेरी को बाध्य कर सकते हैं। यह इसे इंडेक्स स्कैन करने के बाद किसी भी दस्तावेज़ को लोड करने की आवश्यकता से बचने की अनुमति देता है।

इसे आज़माएं और देखें कि क्या व्याख्या आउटपुट "indexOnly":true . को इंगित करता है

db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()

विवरण यहाँ:

http://www.mongodb.org /display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-CoveredIndexes




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो के बाहर के बराबर:हडूप में विकल्प कम करें

  2. मोंगोडब उबंटू 18.04 पर शुरू नहीं हो रहा है

  3. उत्पादन उपयोग के लिए MongoDB जावा ड्राइवर MongoOptions को कैसे कॉन्फ़िगर करें?

  4. Grails - प्रमाणीकरण का उपयोग करके MongoDB डेटाबेस से कनेक्ट करें

  5. Ubuntu 15.10 में प्रोग्राम के रूप में tar.gz फ़ाइल से रोबोमोंगो को कैसे स्थापित करें?