首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化Django Queryset

优化Django Queryset
EN

Stack Overflow用户
提问于 2015-12-28 16:45:40
回答 1查看 111关注 0票数 3

我有以下功能来确定谁下载了某本书:

代码语言:javascript
复制
@cached_property
def get_downloader_info(self):
    return self.downloaders.select_related('user').values(
        'user__username', 'user__full_name')

因为我只使用两个字段,所以在剩下的字段上使用.defer()是否有意义?

我试着使用.only(),但是我得到了一个错误,一些字段不能被JSON序列化。

我愿意接受所有的建议,如果有的话,优化这个查询集。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-28 18:55:41

在尝试每一种可能的优化之前,您应该掌握ORM生成的SQL查询(您可以使用打印出来或使用类似于django调试工具栏的东西),看看它的速度有多慢。之后,我建议您使用解释分析运行该查询,并找出查询的速度。如果查询速度慢,因为需要传输大量数据,那么使用onlydefer就更有意义了。只有在需要检索大量数据时,使用onlydefer (或values)才能提供更好的性能,但这不会使数据库工作变得更容易(当然,除非您必须读取大量数据)。

由于您使用Django和Postgresql,所以可以使用manage.py dbshell获得psql会话,并使用\timing获取查询时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34497353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档