如何加快从大型收藏中获得结果的速度?

时间:2019-01-23 06:58:21

标签: mongodb mongodb-query

我正在使用MongoDB,我想显示集合中的最后10个条目,这些条目应按分数排序。问题是大约有200万个条目,因此每个查询需要5到7秒的时间。

当数据库较小但随着大小增加时,事情运行得很好。我检查了.explain('executionStats'),发现结果是nReturened: 10totalDocsExamined: 1959933,这意味着它将遍历整个数据库以返回最后10个条目。 (如果有人需要该信息,也totalKeysExamined: 0

搜索查询如下: db.logs.find({}).sort({"score":-1}).limit(10).toArray() 查询阶段为COLLSCAN, SORT_KEY_GENERATOR, SORT

我知道find({})正在遍历整个数据库,然后对其进行排序,并获得最后10个结果。但是,加快速度的更好方法应该是什么?

2 个答案:

答案 0 :(得分:2)

{score: 1}上创建索引会很有帮助。如果可用,Mongo肯定会使用索引进行排序。创建索引后,您应该看到IXSCAN,FETCH和LIMIT阶段。

答案 1 :(得分:1)

您需要在mongodb中执行搜索的键上创建索引。 索引将帮助您更快地检索数据。

使用:db.collection.createIndex(keys, options)

有关更多信息,请阅读文档MongoDB create index

希望这会有所帮助。祝你好运!