$in के बारे में प्रश्न का उत्तर देने के लिए....
मैंने निम्नलिखित परिदृश्य के साथ कुछ प्रदर्शन परीक्षण किए:
संग्रह में ~24 मिलियन दस्तावेज़
उन दस्तावेज़ों में से 1 मिलियन को एक कुंजी (अनुक्रमित) के आधार पर देखें
.NET से CSharp ड्राइवर का उपयोग करना
परिणाम:
एक बार में 1 क्वेरी करना, सिंगल थ्रेडेड :109s
एक बार में 1 क्वेरी करना, मल्टी थ्रेडेड:48s
$in, सिंगल थ्रेडेड=20s
क्वेरी का उपयोग करके एक बार में 100K क्वेरी करना $in, मल्टी थ्रेडेड=9s
तो एक बड़े $in (अधिकतम क्वेरी आकार तक सीमित) का उपयोग करके उल्लेखनीय रूप से बेहतर प्रदर्शन।
अपडेट करें: नीचे दी गई टिप्पणियों के बाद $in विभिन्न चंक आकारों के साथ कैसा प्रदर्शन करता है (क्वेरी मल्टी-थ्रेडेड):
एक बार में 10 क्वेरी करना (100000 बैच) =8.8s
एक बार में 100 क्वेरी करना (10000 बैच) =4.32s
एक बार में 1000 क्वेरी करना (1000 बैच) =4.31s
10000 क्वेरी करना एक बार में (100 बैच) =8.4s
एक बार में 100000 क्वेरी करना (10 बैच) =9 (प्रति मूल परिणाम ऊपर)
इसलिए $in क्लॉज बनाम राउंड ट्रिप की संख्या में कितने मान बैच अप करने के लिए एक स्वीट-स्पॉट प्रतीत होता है