【发布时间】:2018-06-25 05:32:04
【问题描述】:
我有以下模型和索引:
var mySchema = new Schema({
page: String,
date: Date,
data: Object,
_page: {
type: Schema.Types.ObjectId,
ref: 'Page'
},
});
mySchema.index({_page: 1, date: 1 }, {unique: true});
这个查询:
mySchema.find({
_page: page._id,
date: {
$gte: date1,
$lt: date2
}
})
.sort({
date: 1
})
.exec((err, result) => {
console.log(result);
})
它会像这样注销:
myschema.find({ date: { '$gte': new Date("Thu, 16 Nov 2017 23:00:00 GMT"), '$lt': new Date("Thu, 14 Dec 2017 23:00:00 GMT") }, _page: ObjectId("5a57b30bf54be100c315f2f5") }, { sort: { date: 1 }, fields: {} })
从包含约 4000 个文档和约 60mb 的表中返回约 30 个结果大约需要 1 秒。
DB 是 mlab 上的副本集群,查询速度与我从 localhost 或我的服务器连接的天气非常相似(db 和服务器在 w-europe)
有什么方法可以加快速度吗?我是否索引或查询错误?
【问题讨论】:
-
不清楚您的数据库服务器是在网络上运行还是在本地运行。导致缓慢的因素有很多。内存、磁盘、网络延迟等
-
@Saleem 更新了问题。希望这会有所帮助...
-
你能发布运行
explain()命令的输出吗? -
@Seb,请按照@Zlatko 的建议包括
explain的输出