2016-11-22 237 views
-1

在我的項目中,我面臨一些情況,我需要在同一視圖中多次查詢同一模型。 (在這種情況下,因爲我使用django和postgresql,django模型)。查詢數據庫

第一種方法可能會在同一模型上過濾多次。

另一種方法可能是我查詢模型並獲取所有數據,然後將其保存到局部變量中。然後我可以多次對該變量進行過濾。

哪種方法最有效我的意思是更快,我應該經歷哪種方法。

可以說我有一個名爲模型人民,我可以採取以下兩種方法:

(1)

active_peoples = People.objects.filter(active=True) 
lazy_peoples = People.objects.filter(lazy=True) 
inactive_peoples = People.objects.filter(active=False) 
good_peoples = People.objects.filter(good=True) 
bad_peoples = People.objects.filter(good=False) 

(2)

peoples = People.objects.all() 
lazy_peoples = peoples.filter(lazy=True) 
inactive_peoples = peoples.filter(active=False) 
good_peoples = peoples.filter(good=True) 
bad_peoples = peoples.filter(good=False) 

哪一種方法是更快??

+0

沒有具體的例子,這太模糊了回答 – Sayse

回答

0

我認爲這是完全依賴於數據集和你的代碼,看到Django提供最好的過濾方法,它可以有效的方式用更少的時間約束篩選數據。

第一個測試用例: -

假設你有小數據集,則可以打數據庫幾次,在一個變量中獲取數據可能會花費更多的時間比一次獲取它,商店和通過迭代。在這種情況下,您最好將數據存儲在一個變量中。

二測試用例: -

假設你有大量的數據集,在這一點,如果你djago獲取的數據過濾器每次可以花費更少的時間比獲取一次,在變量中存儲,並通過它的可變迭代存儲後算法複雜度較低。