python - Django 数据库查询优化
本文介绍了python - Django 数据库查询优化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
一个非常简单的表
ID主键 和 Time 时间字段
数据量大概每天2W,现在要生成一个图表。
目前查询方式是这种。
now = timezone.now().date() - timezone.timedelta(days=2)
current_day_data = SerachAssetData.objects.filter(time__gte=now)
data = [0 for a in range(24)]
for a in current_day_data:
data[(a.time.hour)] += 1
data = data[:6] + data[6:]
用这个查询,需要1~2秒左右。
是否能进行速度优化呢? 还是说。这种数据不能实时查询,需要定时缓存?
解决方案
你现在的做法是把2天的数据一次性拉出来,数据量在2W+
然后去循环处理这2W+的数据,性能肯定快不到哪去
1、实时查询
你完全可以这样做,从日期时拆出小时字段进行聚合
select hour, count(1) from 表 where time>='2017-07-28' group by hour
如果性能还不理想,那就加一个hour字段并建立索引
2、允许延时
如对数据实时性要求不高可以定时计算存放到结果表,比如10分钟计算一次
这篇关于python - Django 数据库查询优化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文