2012-09-14 10 views
5

के लिए 9 सेकंड से अधिक क्यों लेता है मैं निम्नलिखित क्वेरी चला रहा हूं और परिणामों को वापस करने में औसत 9 सेकंड लगते हैं। इस पर कोई फ़िल्टर नहीं है, इसलिए मुझे यकीन नहीं है कि एक सूचकांक मदद करेगा। यह इतनी धीमी गति से क्यों चल रहा है? वहां केवल 250 वस्तुएं हैं, और केवल 4 फ़ील्ड (सभी पाठ) हैं।संग्रह.फिंड ({}) 250 ऑब्जेक्ट्स (मोंगोमैपर)

Country.collection.find({},:fields => ['country_name', 'country_code']).to_json 

"cursor":"BasicCursor", 
"nscanned":247, 
"nscannedObjects":247, 
"n":247, 
"millis":0, 
"nYields":0, 
"nChunkSkips":0, 
"isMultiKey":false, 
"indexOnly":false, 
"indexBounds":{}, 
"allPlans":[{"cursor":"BasicCursor","indexBounds":{}}] 

मशीन पर सीपीयू, मेमोरी और डिस्क क्वेरी रन को भी नोटिस नहीं करती है। किसी भी सहायता की सराहना की जाएगी।

+3

आप मोंगो खोल में एक ही क्वेरी चलाने की कोशिश किया था? – soulcheck

+0

नहीं, ईमानदार के लिए मुझे मोंगो खोल में बहुत अधिक अनुभव नहीं है, मुझे किस वाक्यविन्यास में परिवर्तन करने की आवश्यकता होगी ताकि इसे एक ही प्रश्न के रूप में माना जा सके? – ABrowne

+0

कुछ ऐसा: 'db.countries.find ({}, {'country_name': 1, 'country_code': 1})' – soulcheck

उत्तर

3

का उपयोग कर fiels 'COUNTRY_NAME' सूचक बनाएँ:

db.countries.ensureIndex({country_name:1}); 

कि आपकी क्वेरी तेज़ हो जाएगी काफी आप अनुक्रमित बारे में अधिक जानने here

PS- आप 'यह प्रदर्शित करने के लिए टाइप कर सकते हैं कर सकते हैं अधिक जब आप 'अधिक है' वाक्यांश देखते हैं, या आप इसका उपयोग करके 'अधिक है' के बिना सभी परिणाम प्रदर्शित कर सकते हैं:

db.countries.find({}, {'country_name' : 1, 'country_code' : 1}).forEach(printjson) 

और आप हमेशा का उपयोग करके प्रोफाइलर सेट कर सकते हैं:

>use databaseName; 
> db.setProfilingLevel(2); // 2 tell the profiler to catch everything happened inside the DB 

आप प्रोफाइलर here

के बारे में अधिक सीख सकते हैं और आप

> db.system.profile.find() 

इस पद्धति का उपयोग करके दे देंगे प्रोफाइलर अंदर डेटा प्रदर्शित कर सकते हैं आप अपने डेटाबेस और अंदर क्या हो रहा है के बारे में अधिक जानकारी।

+3

धन्यवाद, db.countries.find ({}, {'country_name': 1, 'country_code': 1}) चल रहा है। खोल के लिए प्रत्येक (printjson) खोलता है और सभी परिणामों को मिलीसेकंड के भीतर वापस कर देता है, क्योंकि मैं मोंगो की अपेक्षा करता हूं सेवा मेरे।मैं अपने रूबी स्टैक पर एक प्रोफाइलर स्थापित करने जा रहा हूं, यह देख रहा है कि क्या क्वेरी उत्पन्न हो रही है जिसे मिलीसेकंड में निष्पादित करना चाहिए सेकंड में निष्पादित करना। – ABrowne

+0

मुझे बताएं कि इंडेक्स बनाने से आपकी क्वेरी तेज हो जाती है, यह मोंगोडब के भीतर एक शानदार विशेषता है। – mongotop

+4

दुख की बात नहीं है, लेकिन यह पता चला कि यह मोंगो नहीं था, लेकिन रूबी ड्राइवर और to_json जो चीजों को धीमा कर रहा था। मैं जेसन परिणाम कैशिंग समाप्त हो गया यह वास्तव में अच्छी तरह से काम करता है। अब पूरे AJAX कॉल 70ms – ABrowne

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