【发布时间】:2020-06-20 18:30:19
【问题描述】:
我正在寻找查询的性能优化。我的目标是找到给定日期范围内的所有文档。集合相当大,它有超过 600 万份文档。所以查询如下:
db.collection.find({
createdAt: {
$gte: new Date('2018-06-19'),
$lt: new Date('2018-06-22')
}
})
运行时间超过 10 分钟。有没有办法利用日期排序的事实?我的意思是文档是在创建时插入的,因此最后一个文档之后落入该范围的每个文档都将超出范围,但 mongo 可能不知道并寻找那些日期已经超出范围的文档??
【问题讨论】:
-
createdAt是否已编入索引?是否可以投影选定的字段而不是获取整个文档? -
它没有被索引,向它添加 idex 是否需要特别小心,而不是让数据库过载这么多项目?我知道我可以添加索引、减少字段等,但我想知道具体的日期范围排序顺序
标签: mongodb indexing mongodb-query query-performance