我有一个收集 “数字” 与200000文档对象与{号:ⅰ} i = 1到200000搜索时间>而不索引
在没有任何索引$ GT:10000给出nscanned 200000个115毫秒。 使用索引号$ gt:10000可扫描189999和355 ms。
为什么更多的时间与索引?
> db.numbers.find({number: {$gt: 10000}}).explain()
{
"cursor" : "BasicCursor",
"nscanned" : 200000,
"nscannedObjects" : 200000,
"n" : 189999,
"millis" : 115,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
> db.numbers.ensureIndex({number: 1})
> db.numbers.find({number: {$gt: 10000}}).explain()
{
"cursor" : "BtreeCursor number_1",
"nscanned" : 189999,
"nscannedObjects" : 189999,
"n" : 189999,
"millis" : 355,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"number" : [
[
10000,
1.7976931348623157e+308
]
]
}
}
我试过很多次迭代,但不同的是几乎与200ms的指数和指数没有。 – 2012-03-20 17:53:33