python - Django 数据库查询优化

查看:111
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆