【发布时间】:2017-10-10 21:18:35
【问题描述】:
假设我有一个名为Best的模型
我想知道如果我不需要查询所有内容,使用Best.objects.all() 是否会是更好的选择,或者Best.objects.filter(this=that) 的整体性能会更好
【问题讨论】:
-
它们是完全不同的东西,但正如你所问的......如果你有一个有 100 万行的表。调用
.all()需要返回 100 万行。如果this == that仅用于其中 1 行,您最好调用.filter(this=that),这样您只需从数据库中提取 1 行。 -
@markwalker_ 不调用
Best.objects.filter(this=that)仍然会搜索百万行以确保所有this=that都被搜索,除非我使用Best.objects.filter(this=that).first()然后它会查询第一个并且停止 -
它仍然会经过一百万行,但是会在数据库中进行操作,而不是将数据传输到 python,因此它更有效。
-
@markwalker_ 非常感谢您的解释。我会记住这一点并使用
filter代替:D
标签: python django django-queryset