gpt4 book ai didi

django - 优化的 Django 查询集

转载 作者:行者123 更新时间:2023-12-02 04:50:24 25 4
gpt4 key购买 nike

我有以下函数来确定谁下载了某本书:

@cached_property
def get_downloader_info(self):
return self.downloaders.select_related('user').values(
'user__username', 'user__full_name')

由于我只使用两个字段,因此对其余字段使用 .defer() 有意义吗?

我尝试使用 .only(),但收到错误消息,指出某些字段不可 JSON 序列化。

我愿意接受所有优化此查询集的建议(如果有)。

谢谢!

最佳答案

在尝试每一种可能的优化之前,您应该先了解 ORM 生成的 SQL 查询(您可以 print it to stdout 或使用类似 django debug toolbar 的查询),看看它的速度慢在哪里。之后我建议您使用 EXPLAIN ANALYZE 运行该查询并找出该查询速度慢的原因。如果由于必须传输大量数据而导致查询速度较慢,那么使用 onlydefer 就很有意义。仅当您需要检索大量数据时,使用 onlydefer(或 values)才能提供更好的性能,但它不会使您的数据库性能下降工作变得更加容易(当然,除非您真的必须读取大量数据)。

由于您使用的是 Django 和 Postgresql,因此您可以使用 manage.py dbshel​​l 获取 psql session ,并使用 \timing 获取查询计时

关于django - 优化的 Django 查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com