2012-12-17 15 views
20

के बीच मतभेद मुझे मोंगोब के समझाए गए क्वेरी आउटपुट में "एनएससीएनएन" और "एनएससीएनडॉब्जेक्ट्स" के बीच सटीक अंतर नहीं मिल सकता है।मोंगोडब में समझाएं() "nscanned" और "nscannedOjects"

MongoDB Explain documentation पर मैं पढ़ सकते हैं:

nscanned आइटम की संख्या (दस्तावेजों या सूचकांक प्रविष्टियों) की जांच की। आइटम ऑब्जेक्ट्स या इंडेक्स कुंजी हो सकता है। यदि कोई "कवर इंडेक्स" शामिल है, nscanned nscanned ऑब्जेक्ट्स से अधिक हो सकता है।

nscannedObjects स्कैन किए गए दस्तावेज़ों की संख्या।

इन दोनों क्षेत्रों के बीच क्या अंतर है? और अधिक विशिष्ट वास्तव में क्या मतलब है जब मैं एक प्रश्न है, जो एक BtreeCursor (एक सूचकांक) का उपयोग करता है, और इन दो क्षेत्रों उदाहरण के लिए, दो अलग-अलग मान:

{ 
    "cursor" : "BtreeCursor a_1_b_1", 
    "isMultiKey" : false, 
    "n" : 5, 
    "nscannedObjects" : 5, 
    "nscanned" : 9, 
    (...) 
} 

मुझे पता है कि एक "covered index" है। मैं समझना चाहता हूं कि ऊपर दिए गए उदाहरण में क्वेरी क्या है। क्या यह 9 तत्वों (एनएससीएनडी = 9) से गुजरता है, जहां वे सभी इंडेक्स प्रविष्टियां हैं और मूल्य ("जांच") मान परिणाम सेट का उत्पादन करने के लिए उनमें से केवल 5 (nscannedObjects = 5) का?

उत्तर

22

इसका मतलब है कि:
क्वेरी n
सूचकांक से स्कैन 9 दस्तावेजों - - 5 दस्तावेजों लौटे nscanned
और फिर संग्रह से 5 पूर्ण दस्तावेजों को पढ़ने - nscannedObjects

इसी प्रकार के उदाहरण को दिया जाता है:
http://docs.mongodb.org/manual/reference/method/cursor.explain/#cursor.explain

0

अगर "कर्सर" है सूचकांक ==> nscanned = नहीं। सूचकांक स्कैन किया गया अन्यथा अगर "कर्सर" FullTableScan ==> nscanned = no है। दस्तावेज़ के

nscannedObjects ==> दस्तावेज़ की संख्या को स्कैन कर

जब क्वेरी करने, सभी गिनती कम करने की कोशिश स्कैन किया है, यानी nscanned और nscannedObjects दोनों न्यूनतम आपकी क्वेरी चाहिए रन तेजी से मतलब है!

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