2016-11-22 153 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获取的数据过滤器每次可以花费更少的时间比获取一次,在变量中存储,并通过它的可变迭代存储后算法复杂度较低。