实际查询比解释显示的要慢

时间:2015-07-07 02:33:55

标签: mongodb mongodb-query

我有大约200K的用户帖子文档。我按顺序创建了以下索引 - _id,用户的组织,帖子状态,用户ID

用户的组织是String; 帖子状态是整数(可能值0,1,2); userid是String。

我使用以下查询, 4秒完成...

db.tickets.find({o:"alphacorp", st:1, u:"myid"}).sort({_id:-1}).skip(0).limit(10)

那么,我在解释时使用相同的查询,你可以看到结果 nscanned 是11个对象, scanandorder 是假的,它花了 3ms < /强>

db.tickets.find({o:"alphacorp", st:1, u:"myid"}).sort({_id:-1}).skip(0).limit(10).explain("executionStats")

解释输出

{
"cursor" : "BtreeCursor _id_ reverse",
"isMultiKey" : false,
"n" : 10,
"nscannedObjects" : 11,
"nscanned" : 11,
"nscannedObjectsAllPlans" : 41,
"nscannedAllPlans" : 71,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 3,
"indexBounds" : {
    "_id" : [ 
        [ 
            {
                "$maxElement" : 1
            }, 
            {
                "$minElement" : 1
            }
        ]
    ]
},
"allPlans" : [...],
"server" : "Hoover:27017",
"filterSet" : false,
}

为什么我的查询没有解释需要花费这么多时间mongodb只扫描11个对象并且统计数据看起来更快?

我已尝试运行查询,然后解释,然后以各种模式再次查询。所以这不是最初加载到内存的问题。

所有操作都在&#34; localhost&#34;所以不涉及网络连接。

0 个答案:

没有答案