0
我分页列表视图与许多领域的典范,所以它需要花费大量的时间来执行MyModel.objects.filter('some filter').count()
,因为SQL水平运行COUNT(ID),而不是在Django
SELECT COUNT(*) FROM mytable
COUNT(*)而不是
:
SELECT COUNT(id) FROM mytable
即使我写明确
MyModel.objects.only('id').count()
我怎样才能让Django的运行COUNT(id)
在.count()
?
更新:
我正在使用PostgreSQL。
你确定它会更快吗? – gavriel
'count(*)'和'count(id)'之间不存在真正的性能差异。不要打扰改变,你不会获得任何东西。由于MVCC模型,'count'在postgresql上简单慢。但是,您可以快速估计行数:https://wiki.postgresql.org/wiki/Count_estimate或者您可以跟踪单独表/缓存中的行数。 – freakish
我想你不会在速度上发现太多的差异,但显然是一些新的学习。 –