使用.only()和.values()的速度要慢多少?

时间:2011-12-16 21:53:08

标签: django

我一直在使用.values()来加速我的django查询。

最近我尝试使用.only(),我假设它只比值慢一点,并且不需要处理字典(例如关键错别字,没有代码自动完成)

但似乎在加载1000个对象时,.only()比我使用.values()(大约需要4秒)慢了约0.5-1秒。

你们中是否有人经历过类似的表现,任何人都可以确认或否定这一观察结果吗?

1 个答案:

答案 0 :(得分:4)

虽然查询本身可能需要相似的时间才能完成,但我怀疑你所看到的性能差异是在Python方面。当您使用'only'方法时,您仍然可以从数据库中获取完整的Django对象。这些设置成本高,占用更多内存。在处理超过几千种物品时,它们实际上变得几乎完全无法管理。

正如您所知,'values'方法将所有内容都放入标准Python字典中。这些更难以使用,但设置时间微不足道,内存使用率也大大降低。

如果您想查看实际的查询长度差异,请查看django debug toolbar。它将为您提供一个方便的配置文件列表,列出为页面加载所做的每个查询。