在Django query中減少搜尋資料庫的次數

2021-07-23 21:59:15 字數 697 閱讀 3182

測試資料庫連線可以使用

from django.db import connection

在執行完資料庫搜尋後

print connection.queries

可以看到每次搜尋的時間和內容

問題

之前的**中基本都是先 tem = model.objects.filter(), 然後再寫乙個for loop來迴圈tem。有django的query是lazy的,就是filter之後其實並沒有從databases中取出東西,只有實際使用時候才完成搜尋。如果出現

for

forfor t in tem:

m = t.attr

那麼就是有數百次的資料庫搜尋任務,實際執行時間很慢,對於我建立的很小的測試資料集合,600次搜尋用了感覺上0.5秒(實際可能少點)。

解決把搜尋結果先cache到memory中,再用for loop去呼叫。

用到query中的values()和values_list(),把結果搜尋出來

model.objects.filter(……).values('', '')引數是你需要的屬性字段

或者values_list('', '')

這樣就可以簡單的把connect.queries從600降到4了。(in my work)

以上。

在Unity 5中如何減少Draw Call

本文為大家分享unity 5中標準著色器的簡單概念,並分析如何減少draw call unity 5中顯示為setpass calls,下文的draw call皆表示setpass calls 標準著色器是基於物理的著色器,可以正確渲染各種光照條件下的效果,支援跨平台,擁有可以啟用不同功能著色器的紋...

在使用INV中如何減少記憶體的消耗

1 使用大型部件檔案時,請關閉無需開啟的所有應用程式,以減少與硬碟的頁面置換。2 通過最小化圖紙上的檢視數量,使工程 件的大小盡可能小。例如,有乙個主部件基礎檢視,其他投影檢視 區域性檢視或剖檢視不多於 4 個。3 最小化工程 件中的圖紙數量。4 在部件檔案中,請盡可能關閉螺旋和彈簧的可見性。5 使...

如何追中異常,減少debug時間

今天在debug的時候,又出現了空指標,我這次真的火了!每次遇到空指標,net給出的資訊總是非常的少,我根本不知道是 throw出來的,只能反覆檢查 思路大概是 獲取exception的呼叫堆疊。獲取exception相關的這個方法的方法的il 結合excpetion的il偏移量和方法的il,把呼叫...