Mongodb 查询性能提高问题

hi_water 发布于 2016/12/13 15:30
阅读 314
收藏 0

简单描述:

    我做的项目用到了mongoDB, 主要是查询和插入操作。前端用的基于jinja框架的flask.目前有一个接口,调用的时候会从mongodb 查询数据然后在网页前端显示。

问题:

    打开网页的速度有点慢,想优化一下,请问能从哪几个角度优化?

自己尝试:

    给查询的字段加了索引,测试后性能有微小的提高。测试发现mongo的count 统计比较消耗时间。

     

加载中
0
eechen
eechen
SQL里的count也耗时,比如SQLiteStudio里执行:
SELECT count(id) FROM post; 统计1500135行
Query finished in 0.140 second(s).

执行快的那些语句耗时都是千分之一秒,比如:
SELECT * FROM post WHERE id > 1000000
ORDER BY id ASC LIMIT 10 OFFSET 0;
Query finished in 0.002 second(s).

百分之几秒那些也算是比较慢的了:
SELECT * FROM post ORDER BY id DESC
LIMIT 10 OFFSET 1000000;
Query finished in 0.041 second(s).

0
hi_water
hi_water

引用来自“eechen”的评论

SQL里的count也耗时,比如SQLiteStudio里执行:
SELECT count(id) FROM post; 统计1500135行
Query finished in 0.140 second(s).

执行快的那些语句耗时都是千分之一秒,比如:
SELECT * FROM post WHERE id > 1000000
ORDER BY id ASC LIMIT 10 OFFSET 0;
Query finished in 0.002 second(s).

百分之几秒那些也算是比较慢的了:
SELECT * FROM post ORDER BY id DESC
LIMIT 10 OFFSET 1000000;
Query finished in 0.041 second(s).

谢谢你的回复, 那就是说count 耗时是没法改变的, 那么能返回object 然后遍历获取count. 这样效率应该会快点,但是循环遍历又很耗时:
objects = db.find({"org_name_en": {"$in": org_names}})
for indx, object in enumerate(objects):
    count = indx+1
return count
    
yak
yak
回复 @eechen : php野生程序猿不需要培训,也不需要了解数据一致性,只需要把最大id拿过来当count用 因为看起来长得都差不多,而且这样明显感觉”快多了“数据库优化技能Get
yak
yak
回复 @eechen : 用最大id来冒充count值,这是从哪充值过来的智商?
eechen
eechen
回复 @yak : 少瞎比比浪费时间了,你的智商和技能都需要充值,去北大青鸟再培训几年Java才出来混吧.
yak
yak
回复 @eechen : 那我就考考你的智商 称赞你智商有进步,需要打小报告吗?
eechen
eechen
回复 @yak : 动不动就脑残的你污染了我的视线呀
下一页
0
游客
游客
你先要找到瓶颈在什么地方
返回顶部
顶部