使用exists()和count()一起有意义吗?

时间:2015-09-14 17:55:44

标签: django django-orm

这样做有意义吗?

if Model.objects.filter(...).exists():
   c = Model.objects.filter(...).count()

数据库的价格低于此吗?

c = Model.objects.filter(...).count()

我正在考虑在数据库上花费的时间。欢迎您的意见。

1 个答案:

答案 0 :(得分:2)

如果对象确实存在,则执行两个查询的效率低于执行一个查询。

如果没有对象存在,我无法想到为什么exists()明显快于count()

所以我会坚持:

c = Model.objects.filter(...).count()

首先执行exists()的一个缺点是,当c返回exists()时,您尚未设置False。如果你不小心,这可能导致NameError