Django查看响应时间问题
发布时间:2020-12-20 13:24:17 所属栏目:Python 来源:网络整理
导读:嗨我有很多从查询得到的对象,查询集尚未评估,当我将对象列表传递给paginator对象时,它需要14秒才能返回paginator对象,这是因为它正在评估列表中所有需要时间的对象(击中db可能是). 在将查询集发送到paginator对象之前,我强制评估了它: ds_objects = list(ds
嗨我有很多从查询得到的对象,查询集尚未评估,当我将对象列表传递给paginator对象时,它需要14秒才能返回paginator对象,这是因为它正在评估列表中所有需要时间的对象(击中db可能是).
在将查询集发送到paginator对象之前,我强制评估了它: ds_objects = list(ds_objects) 猜猜现在分页在返回对象时花费了0.0秒,但问题仍然存在,现在所有时间都由ds_objects = list(ds_objects)完成,我怎么能有效地做到这一点,以便我的视图响应时间缩短到2或3秒?我没有找到任何最佳解决方案:s 解决方法
我的猜测是JOIN(所以select_related)对查询速度并不重要.无论如何,当你执行values()查询时,你真的不需要select_related,因为你将获得的唯一字段是指定为values()参数的字段,无论如何它们都被JOIN检索.
要了解为什么需要这么长时间,您可以执行以下操作: 打印出“raw sql” print tbl_action_log.objects.order_by('-TicketID','-ActionLogID').query 修改它(它实际上不是SQL,但它应该足够接近)在SQL客户端中运行,比如django自己的manage.py dbshel??l. 执行它,记下时间.然后执行EXPLAIN …(将您的查询放在点中),您可能会看到一些“全表扫描”消息 在受影响的列上向数据库表添加适当的索引,然后再次执行查询.索引可能是这样的: CREATE INDEX idx_action_log_on_tkid_logid ON tbl_action_log (TicketID,ActionLogID); 如果对索引满意,请将其创建命令存储在?文件app / sql / modelname.sql,这将在任何新部署中创建索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |