如何减少MongoDB中大容量数据的查询时间

时间:2018-11-16 12:48:12

标签: node.js json mongodb nosql mongodb-query

我正在尝试在MongoDB中查询与查询的10000多个数据匹配的集合。即使使用索引,查询时间仍超过25秒。

例如,我有一个表People和字段name, age。 我需要获取年龄为25岁的People数据,如果查询找到匹配的对象为10000,则需要花费一些时间来获取整个数据。

我已经创建了像db.people.createIndex({"age":1})

这样的索引

在这里,如何减少查询时间

1 个答案:

答案 0 :(得分:0)

运行db.collection.find()。explain()并确保实际上使用了索引。确保您没有https://docs.mongodb.com/manual/reference/explain-results/那里没有COLLSCAN。

如果您的文档具有一些/很多大属性,而您只需要一些属性,则尝试仅请求它们(例如,仅_id或_id和名称)。传输的数据越少,速度越快。

如果您的数据库不适合内存,请使其适合内存。一旦数据库不合适,性能将大大降低。

如果您不在分片群集上运行,请基于合理的分片密钥创建一个。年龄可能不是一个很好的选择,因为所有年龄等于25的文档最终都将集中在一个节点上。即使您有一台带有多个CPU的计算机,它仍然可能对您更好(如果您有足够的内存)。它甚至可能以其他方式起作用。如果一台计算机上有一个分片群集,而副本不适合内存,则最好只使用一个节点。