我有一個收集 「數字」 與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