问 题
1.描述:
目前正在为一个平台程序做一个展示页面,展示页面要求显示大量的统计数据,如用户拥有的任务数量、任务的构成、结果的TOP显示等等等等。
后台提供的数据库就是程序执行完成后的每项元数据,需要我从中筛选出足够的信息去进行展示。因为第一次开发Django程序,我能想到的就是用ORM模型去分别找到数据,封装好后传给template去进行展示。
但是最近发现当用户和任务数量达到一定的量级的时候,页面打开很慢。
我使用django_toolbar发现在少量测试样例(100个任务)里面SQL的查询就足够多了,而且其中出现了IN的查询(因为这个表最初就是设计给调度的那个程序使用的,没考虑展示,因此查询起来比较复杂),这样效率就很低了。截图如下:
2.自己的一些想法:
因为我没开发过Django和前端的经验,因此我想了解一般对于这类的网站,是不是前端展示也要单独做一些表出来,然后在调度的后台有新数据的时候维护前端展示的数据表的数据更新(比如使用存储过程中的触发器)。
还是说有其他更好的方式。
希望各位大牛能够分享你们的意见。Thanks~
解决方案
django只是一套orm框架,不涉及到你的业务逻辑,你提到的速度慢,应该想办法优化你的业务逻辑
django只是用于展示数据,如果查询速度过慢,看看sql有没有优化的余地,如果没有优化空间应该建立一张新的表,数据由后端程序运行好存到表里
你也可以考虑把汇总相关的功能用elasticsearch来实现
扫一扫关注IT屋
微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起