我正在研究如何在过滤包含大量数据(数千行)的JSONField的查询集时提高性能。即使在查询和返回大约100个对象时,返回也非常慢。10-20秒。我逐渐意识到问题出在JSONfield上,以及大型数据集存储在该字段中的事实。我正在阅读Djangos的.only()和.defer()方法,因为我不需要在这个JSONField中使用任何数据,但是不使用这些方法的性能似乎完全相同。我只是在这里寻找一些关于如何提高性能的指导。
.only()
.defer()
gk7wooem1#
如果在查询后使用for循环(在模板或视图中),则可能会隐含正在执行的其他查询。在循环之前在查询中使用select_related可以防止进一步的额外查询,并提高性能。
7vhp5slm2#
是否尝试过使用.values()或values_list()?
2条答案
按热度按时间gk7wooem1#
如果在查询后使用for循环(在模板或视图中),则可能会隐含正在执行的其他查询。
在循环之前在查询中使用select_related可以防止进一步的额外查询,并提高性能。
7vhp5slm2#
是否尝试过使用.values()或values_list()?