2011-12-16 52 views
2

我一直在使用主要是.values()加快我的Django查询。使用.only()与.values()比较慢多少?

最近,我试图用我假定.only()只比没有处理字典(如关键错别字,不会有代码自动完成)

但似乎额外的好处值稍慢在装载1000个对象时,.only()比我使用.values()(大约需要4s)慢了〜0.5-1秒。

你们有没有经历类似的表现,并且任何人都可以证实或否定这种观察?

回答

3

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

正如您所知,'values'方法将所有内容都放入标准的Python字典中。这些工作起来很困难,但是安装时间并不重要,内存使用量也大大减少。

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