2010-06-02 36 views
0

我正在嘗試降低我的django應用程序正在使用的查詢量,但我對如何執行此操作有點困惑。在Django中優化此類查詢的最佳方法

我想獲得一個命中查詢設置到數據庫,然後過濾來自該設置的項目。我已經嘗試了幾件事,但我總是得到每一組的查詢。

比方說,我想從我的數據庫中得到所有的名字,但也分離出剛纔名爲特德的人。名稱和特德集都將在模板中使用。

這會給我兩組,一組與所有的名字和一個與特德..但也打兩次數據庫:

名稱列表= People.objects.all()

tedList = namelist.filter (name ='ted')

有沒有辦法在沒有再次敲入數據庫的情況下過濾第一組?

+0

首先,請將您的代碼縮進四個空格。使用「101010」按鈕。其次,Django(和你的數據庫)大量使用緩存。你怎麼知道這些查詢實際上是一個性能問題?請提供一些指標來顯示查詢會減慢應用程序的速度。 – 2010-06-02 17:12:41

+0

我看到兩個命中數據庫,因爲我認爲可能會一擊。這就是我要做的。對我來說似乎是常識,一擊比兩個更好......但我可能是錯的。 – chris 2010-06-02 17:47:34

回答

0
tedList = [person for person in namelist if person.name == 'ted'] 

這將過濾的客戶端側的初始QueryList

+0

謝謝!那樣做了。 – chris 2010-06-02 17:45:04

+0

數據庫查詢的速度很快 - 數據庫針對這種情況進行了優化。 如果有人真的要測試這兩種方法,我會對看到結果感興趣。 – 2010-06-02 18:52:57