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

$gt और $lte दोनों के साथ MongoDB क्वेरी को ऑप्टिमाइज़ कैसे करें?

इसलिए, मोंगो में डबल रेंज के प्रश्नों की सलाह नहीं दी जाती है। मुझे लगता है कि आपके पास एक ही अनुक्रमणिका है जिसमें {start_ip_num: 1, end_ip_num: 1} दोनों शामिल हैं। .

यदि वह आपको पर्याप्त रूप से बंद नहीं करता है (अक्सर यह अभी भी धीमा है यदि आपके पास पहले फ़ील्ड द्वारा पर्याप्त डेटा लौटाया गया है, क्योंकि इसमें बहुत सी बी-पेड़ स्कैनिंग करना है), एक चाल है जो आप इसका मुकाबला करने के लिए कर सकते हैं 2D बॉक्स क्वेरी का उपयोग करना (एक समय में केवल दो श्रेणियों के लिए काम करता है)।

मूल रूप से, आप एक 2D जियो इंडेक्स को एक सरणी में दो बिंदुओं वाले फ़ील्ड पर रखते हैं, जैसे [start_ip, end_ip], और इसे एक उच्च पर्याप्त न्यूनतम/अधिकतम मान दें ताकि यह उन सीमाओं से न टकराए जो कि डिफ़ॉल्ट रूप से हैं -180/180.

अंत में, बॉक्स के एक कोने पर न्यूनतम से $lte मान तक जाने वाली सीमा और बॉक्स के दूसरे कोने पर gt और अधिकतम मान के साथ एक सीमा क्वेरी का उपयोग करें। देखें http://www.mongodb.org/display/DOCS/ Geospatial+Indexing#GeospatialIndexing-BoundsQueries वाक्य रचना के लिए।

यह कुछ इस तरह दिखता है:

db.ip_ranges.find({ip_range:{$within:{$box:[[0, 1204135028], [1204135028, max]]}}});

जहां अधिकतम आपके पास सबसे बड़ा आईपी हो सकता है।

जब से मैंने इसे देखा है, तब से कुछ समय हो गया है, इसलिए बॉक्स गलत हो सकता है, लेकिन अवधारणा ध्वनि है, और इसने डबल रेंज के प्रश्नों को नियमित दो फ़ील्ड बी-ट्री इंडेक्स की तुलना में थोड़ा बेहतर प्रदर्शन किया है। नियमित सूचकांक के साथ कुछ सेकंड की तुलना में लगातार एक सेकंड (हालांकि आमतौर पर कुछ सौ एमएस) के तहत - मुझे लगता है कि मेरे पास उस समय सैकड़ों लाखों दस्तावेज़ थे, लेकिन कुछ समय हो गया है इसलिए इन याद किए गए बेंचमार्क को अनाज के साथ लें नमक का। मुझे यकीन है कि आपके डेटा और श्रेणी के आकार के आधार पर परिणाम बहुत भिन्न होंगे।

अपडेट करें: आप bits . के साथ प्रयोग करना चाह सकते हैं सेटिंग, कम संख्या और उच्च संख्या की कोशिश करके यह देखने के लिए कि क्या इससे कोई फर्क पड़ता है। मेरे लिए, यह औसतन प्रश्नों को प्रभावित नहीं करता था। देखें http://www.mongodb.org/display/DOCS/ Geospatial+Indexing#GeospatialIndexing-CreatingtheIndex वाक्य रचना के लिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मैं मोंगोडब में टेक्स्ट घटा सकता हूं?

  2. MongoDB दस्तावेज़ों को प्रकार के साथ वर्ग में मैप करना लेकिन एम्बेडेड दस्तावेज़ों के बिना

  3. स्वचालित डेटाबेस स्वास्थ्य जांच

  4. MongoDB - एंबेडेड दस्तावेज़ की सूची पर $addToSet

  5. MongoDB में प्रति वर्ष और माह एकत्रीकरण