我很困惑为什么将搜索字段设为“索引”会使查询“理论上”变慢。
我收藏的物品不是很多(6240),它们都具有以下结构。
const SomeSchema = new mongoose.Schema({
data: String,
from: {
type: Number,
},
to: {
type: Number,
},
timeStamp: {
type: Date,
default: new Date()
}
})
SomeSchema.set('toJSON', {
getters: true,
transform: (doc, ret) => {
delete ret.from
delete ret.to
return sanitizeSensitiveProperties(ret)
}
})
export const Some = mongoose.model('Some', SomeSchema, 'somethings')
当尝试改善查询后,我将架构更改为
时,发生了一件奇怪的事情。...
from: {
type: Number,
index: true
},
to: {
type: Number,
index: true
},
...
使用此架构,我运行以下查询
db.rolls.find({from: {$lte: 1560858984}, to: {$gte: 1560858984}}).explain("executionStats")
这是结果请注意,第一个是没有索引的
"executionTimeMillis" : 6,
"totalKeysExamined" : 0,
"totalDocsExamined" : 6240,
"executionTimeMillis" : 15,
"totalKeysExamined" : 2895,
"totalDocsExamined" : 2895,
这个结果有意义吗,还是mongo .explain()
函数搞砸了?
如您所见,我正在^ 5.5.13版本中使用Mongoose
驱动程序,而在4.0.5版本中正在使用Mongo