मैं इस सरल उपसर्ग क्वेरी के साथ अटक गया हूं। हालांकि Mongo docs राज्य है कि आप उपसर्ग regex प्रारूप का उपयोग करके काफी अच्छा प्रदर्शन प्राप्त कर सकते हैं (/^एक /), क्वेरी बहुत धीमी है जब मैं परिणामों को सॉर्ट करने का प्रयास करें:रेजेक्स और सॉर्ट के साथ मोंगोड सरल उपसर्ग क्वेरी धीमी है
940 मिली सेकंड के
db.posts.find ({हैशटैग:/^ Noticias /})। सीमा (15) .sort ({रैंक: -1})।। संकेत ('hashtags_1_rank_ -1') की व्याख्या()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 142691,
"nscanned" : 142692,
"nscannedObjectsAllPlans" : 142691,
"nscannedAllPlans" : 142692,
"scanAndOrder" : true,
"indexOnly" : false,
"nYields" : 1,
"nChunkSkips" : 0,
"millis" : 934,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
हालांकि, एक ही क्वेरी का अपरिवर्तित संस्करण सुपर फास्ट है:
0 मिली सेकंड के
db.posts.find।। ({हैशटैग:/^ Noticias /}) सीमा (15) .hint ('hashtags_1_rank_ -1') की व्याख्या()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 15,
"nscanned" : 15,
"nscannedObjectsAllPlans" : 15,
"nscannedAllPlans" : 15,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
क्वेरी तेजी भी है अगर मैं regex और प्रकार निकालें:
0 मिली सेकंड के
db.posts.find ({हैशटैग: 'Noticias'}) सीमा (15) .sort ({रैंक: -1})।। संकेत ('hashtags_1_rank_ -1')। समझाने()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 15,
"nscanned" : 15,
"nscannedObjectsAllPlans" : 15,
"nscannedAllPlans" : 15,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticias"
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
यह दोनों regex का उपयोग कर की तरह लगता है और तरह मोंगो रिकॉर्ड के बहुत सारे स्कैन करता है। हालांकि, अगर मैं regex का उपयोग नहीं करता तो सॉर्ट केवल 15 स्कैनिंग कर रहा है। यहाँ क्या गलत है?
जैम, मुझे विश्वास है कि 'स्कैन एंड ऑर्डर' 'धीमेपन के लिए ज़िम्मेदार है। आप [आंद्रे का जवाब] देखना चाहते हैं (http://stackoverflow.com/questions/11871187/removing-scanandorder-true-in-my-mongodb-query-result) जो समान हो सकता है यदि आपके जैसा बिल्कुल नहीं मुद्दा। – slee