2011-12-16 47 views
2

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

最近,我試圖用我假定.only()只比沒有處理字典(如關鍵錯別字,不會有代碼自動完成)

但似乎額外的好處值稍慢在裝載1000個對象時,.only()比我使用.values()(大約需要4s)慢了〜0.5-1秒。

你們有沒有經歷類似的表現,並且任何人都可以證實或否定這種觀察?

回答

3

儘管查詢本身可能需要花費相當長的時間才能完成,但我懷疑你看到的性能差異是在Python方面。當你使用'only'方法時,你仍然可以從數據庫中得到完整的Django對象。這些設置昂貴並佔用更多內存。處理超過幾千件物品時,它們實際上幾乎變得難以管理。

正如您所知,'values'方法將所有內容都放入標準的Python字典中。這些工作起來很困難,但是安裝時間並不重要,內存使用量也大大減少。

如果您想查看實際查詢長度差異,請查看django debug toolbar。它會給你一個方便的配置文件列表,爲頁面加載所做的每個查詢。