【问题标题】:Query on database查询数据库
【发布时间】:2017-04-06 01:17:22
【问题描述】:

在我的项目中,我遇到了一些需要在同一个视图中多次查询同一个模型的情况。 (在这种情况下,我使用的是 django 模型,因为我使用的是 django 和 postgresql)。

第一种方法可能是在同一个模型上过滤多次。

另一种方法可能是我在模型上查询并获取所有数据,然后将其保存到局部变量中。然后我可以对该变量进行多次过滤。

哪种方法最有效,我的意思是更快,我应该采用哪种方法。

假设我有一个名为 People 的模型,我可以采用以下两种方法:

(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)

哪种方法更快??

【问题讨论】:

  • 没有具体的例子,这太模糊了,无法回答

标签: django postgresql django-models


【解决方案1】:

我认为这完全取决于数据集和您的编码,请参阅 Django 提供了最佳过滤方法,它可以有效地过滤您的数据,并且时间限制更少。

第一个测试用例:-

假设你有一个小数据集,那么可能会多次访问数据库,并且获取数据可能比获取一次需要更多时间,存储在一个变量中并迭代它。在这种情况下,最好将数据存储在一个变量中。

第二个测试用例:-

假设您有大型数据集,在此情况下,如果您每次使用 djago 过滤器获取数据所花费的时间可能比一次获取数据要少,存储在变量中,然后存储在变量中,然后使用复杂度较低的算法迭代它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多