用的是mongdb的find方法一次查出数据有20万条左右,本地测试需要30秒到50秒左右,后来在网上查询说需要建立索引,然后又建立了索引查询。然而并没有快多少。因为数据需要一次返回给前端,前端要以曲线图的方式显示。如何优化查询时间还请各位指点一下,谢谢!
结果集太大了,建索引只能加快一部分速度。
我觉得问题不在查询,而是传输. 可以考虑采用聚集的方式先把数据合并一下再发送给前端.例如前端给你传一个step值, 你根据这个step值进行一下合并.
1、从业务的需求,如果可以的话,建议分页,比如一次返回1000条数据什么的。一次20万条数据,用户能看完吗? 2、如果不能分页,内容集太大的话,建议用流的形式。不用流的话,一次性查这么多数据,内存有压力。
不是传输问题,传输的数据是我统计过后的就一个集合而已,关键在于这个数据量比较大然后还要分类统计总和。这个过程可能有点慢。
问题已经有个比较好的办法了,就是每个月都把上个月的数据统计出来放在临时表里面,然后输入时间段,查询临时表再返回就很轻松了,谢谢大家解答
lean(true)一定要加上
用聚合查询,让mongodb帮你统计。 db.collection.aggregate()
你这个我弄过,基本就是你说的解决方式,按照不同的粒度(月,周)生成临时的结果集,就轻松多了。 自豪地采用 CNodeJS ionic