为什么Django的count()
会产生这样的SQL查询
SELECT COUNT(*)
有没有一种方法可以只依靠一列?
例如,有一个包含以下行的模型:- id - first_name - last_name而不是在与SELECT COUNT(id, first_name, last_name)
类似的*
上运行计数,我只想运行
SELECT COUNT(id)
或者最好是做SELECT COUNT(1)
。我之所以要这样做,是因为我曾经听说,对于大型表,这样做会更快。
注意:问题不在于速度快不快,而在于如何使用Django进行查询。因此,请不要将其标记为与Count(*) vs Count(1) - SQL Server重复
发布于 2019-09-03 10:46:23
如果目的是对列x
中没有null值的行进行计数,则应该使用Django的aggregate
MyModel.objects.aggregate(Count('x'))
但是,如果您的目的是加快查询速度,那么这是没有意义的,因为SELECT COUNT(*)
或SELECT COUNT(x)
与所解释的here具有完全相同的速度。
发布于 2019-09-03 10:54:51
尝尝这个
Entry.objects.values_list('field_name', flat=True).count()
https://stackoverflow.com/questions/57769257
复制