2014-01-15 40 views
0

我有2个疑问:为什么mongodb查询,2条件比1条件慢?

// query 1 
{ 
"site.$id": ObjectId("52d617b5d8c472274f00004f") 
} 
// query 2 
{ 
"site.$id": ObjectId("52d617b5d8c472274f00004f"), 
"category.$id": ObjectId("52d617c0d8c472274f000076") 
} 

可有人请解释为什么第二个查询花了1秒,而第一个是非常快的?

这个系列共有约300.000项 这里是查询1

db.Product.find({ "site.$id": ObjectId("52d617b5d8c472274f00004f") }).explain() 
{ 
"cursor" : "BasicCursor", 
"isMultiKey" : false, 
"n" : 21, 
"nscannedObjects" : 279001, 
"nscanned" : 279001, 
"nscannedObjectsAllPlans" : 279001, 
"nscannedAllPlans" : 279001, 
"scanAndOrder" : false, 
"indexOnly" : false, 
"nYields" : 3, 
"nChunkSkips" : 0, 
"millis" : 545, 
"indexBounds" : { 

}, 
"server" : "ip-172-31-9-78:27017" 
} 

这里解释为查询说明2

db.Product.find({ "site.$id": ObjectId("52d617b5d8c472274f00004f"), "category.$id": ObjectId("52d617c0d8c472274f000076") }).explain() 
{ 
"cursor" : "BasicCursor", 
"isMultiKey" : false, 
"n" : 1, 
"nscannedObjects" : 279002, 
"nscanned" : 279002, 
"nscannedObjectsAllPlans" : 279002, 
"nscannedAllPlans" : 279002, 
"scanAndOrder" : false, 
"indexOnly" : false, 
"nYields" : 107, 
"nChunkSkips" : 0, 
"millis" : 1852, 
"indexBounds" : { 

}, 
"server" : "ip-172-31-9-78:27017" 
} 
+1

你能为每个查询显示解释吗? – Sammaye

+0

我补充说,谢谢 – quaninte

回答