2014-05-13 6 views
5

मेरे पास परीक्षण उद्देश्यों के लिए किए गए संग्रह पर विभिन्न प्रश्नों के प्रदर्शन को बेंचमार्क करने के साथ कुछ अप्रत्याशित परिणाम हैं। संग्रह कुछ हद तक मेरी वास्तविक जरूरतों को नकल कर रहा है 10.000 दस्तावेज, प्रत्येक 20 फ़ील्ड (प्रत्येक 5-30 वर्णों के साथ) के साथ। सभी दस्तावेज बिल्कुल वही हैं, और केवल _id अलग हैं (शायद यह किसी भी तरह की समस्या है?)।मोंगोडीबी क्वेरी प्रदर्शन: सभी बनाम चुनिंदा फ़ील्ड

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

सादा खोज लगभग 5msec में किया जाता है।

db.collection.find().explain() 

कस्टम खोज लगभग 30msec में किया जाता है।

db.collection.find({},{Field1:1,Field2:1,Field3:1,Field4:1,Field5:1,Field6:1,Field7:1},{}).explain() 

सादे 'सभी को खोजने के' और वास्तव में तेजी से क्वेरी 'सब लौट' या मैं कुछ याद आ रही है है?

उत्तर

1

यदि आप पूरे दस्तावेज़ को वापस करते हैं - यह डेटाबेस के लिए कम ओवरहेड है क्योंकि यह दस्तावेज़ को आंशिक रूप से वापस करने के लिए परिवर्तित नहीं करता है। सभी दस्तावेज़ बीएसओएन प्रारूप में डेटाबेस में संग्रहीत हैं। और उसी तरह से लौट आया।

आपके मामले में, एक छोटे से ओवरहेड की उम्मीद है।

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

संबंधित मुद्दे