使用 .only() 比使用 .values() 慢多少?

Xer*_*ion 4 django

我主要使用.values()来加速我的 Django 查询。

最近,我尝试使用.only()我认为仅比值稍慢的 ,并且具有不必处理字典的额外好处(例如关键拼写错误,没有代码自动完成)

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

你们中有人经历过类似的表现吗,谁能证实或否认这一观察结果?

Eva*_*ley 5

尽管查询本身可能需要类似的时间来完成,但我怀疑您看到的性能差异是在 Python 方面。当您使用 'only' 方法时,您仍然可以从数据库中获取完整的 Django 对象。这些设置起来很昂贵并且需要更多的内存。当处理超过几千个项目时,它们实际上变得几乎完全无法管理。

正如您所知,'values' 方法将所有内容放入标准 Python 字典中。这些更难使用,但设置时间很短,内存使用量也大大减少。

如果要查看实际查询长度差异,请查看django 调试工具栏。它将为您提供为页面加载所做的每个查询的方便的配置文件列表。