我一直在使用.values()
来加速我的django查询。
最近我尝试使用.only()
,我假设它只比值慢一点,并且不需要处理字典(例如关键错别字,没有代码自动完成)
但似乎在加载1000个对象时,.only()
比我使用.values()
(大约需要4秒)慢了约0.5-1秒。
你们中是否有人经历过类似的表现,任何人都可以确认或否定这一观察结果吗?
答案 0 :(得分:4)
虽然查询本身可能需要相似的时间才能完成,但我怀疑你所看到的性能差异是在Python方面。当您使用'only'方法时,您仍然可以从数据库中获取完整的Django对象。这些设置成本高,占用更多内存。在处理超过几千种物品时,它们实际上变得几乎完全无法管理。
正如您所知,'values'方法将所有内容都放入标准Python字典中。这些更难以使用,但设置时间微不足道,内存使用率也大大降低。
如果您想查看实际的查询长度差异,请查看django debug toolbar。它将为您提供一个方便的配置文件列表,列出为页面加载所做的每个查询。