Django ORM问题:相同的查询集在两个不同的视图上以截然不同的速度运行

Django ORM问题:相同的查询集在两个不同的视图上以截然不同的速度运行,django,django-views,django-orm,Django,Django Views,Django Orm,我有两个视图——一个是管理站点的一部分,另一个是可公开访问的视图 它们都执行相同的一组查询——按字面意思复制和粘贴代码 masterQuery = myObject.objects.filter(is_public=True) newQuery = queriedForms.filter(ref_to_parent_form__record_reference__form_name__icontains=term['TVAL'], ref_to_parent_form__record_refe

我有两个视图——一个是管理站点的一部分,另一个是可公开访问的视图

它们都执行相同的一组查询——按字面意思复制和粘贴代码

masterQuery = myObject.objects.filter(is_public=True)
newQuery =  queriedForms.filter(ref_to_parent_form__record_reference__form_name__icontains=term['TVAL'], ref_to_parent_form__record_reference_type__pk=rtypePK)
newQuery = newQuery.filter(flagged_for_deletion=False)
term['count'] =  newQuery.count()
masterQuery = (newQuery & masterQuery)
singleQueryStats['intersections'] = masterQuery.count()
每个视图都有完全相同的代码——这不是最漂亮的查询——但不管怎样:在admin视图上——运行时间不到1/4秒。在public Views.py视图中--需要8分钟。我不明白为什么。queryset.query输出是相同的。变量(admin通过POST提交/Public通过GET提交)也匹配

编辑:我试图进一步简化事情,但没有结果:

SELECT `maqluengine_form`.`id`, `maqluengine_form`.`form_name`, `maqluengine_form`.`form_number`, `maqluengine_form`.`form_geojson_string`, `maqluengine_form`.`hierarchy_parent_id`, `maqluengine_form`.`is_public`, `maqluengine_form`.`project_id`, `maqluengine_form`.`date_created`, `maqluengine_form`.`created_by_id`, `maqluengine_form`.`date_last_modified`, `maqluengine_form`.`modified_by_id`, `maqluengine_form`.`sort_index`, `maqluengine_form`.`form_type_id`, `maqluengine_form`.`flagged_for_deletion` FROM `maqluengine_form` WHERE (`maqluengine_form`.`form_type_id` = 319 AND `maqluengine_form`.`flagged_for_deletion` = False)
这是两个视图上的查询输出——admin视图采用我是个白痴——两个查询集不一样——有一个额外的booleanfield被命中,我读错了日志——答案是查询集不一样——因此回答了这个问题


我提交了一个新问题,以找出两者之间的巨大速度差异。

您确定这是查询本身吗?不是围绕查询的逻辑。此外,
QuerySet
s本身是惰性的,因此,通过编写查询,它本身并不意味着所有查询都是经过计算的。是的-如果查询本身完全相同,并且以完全相同的方式执行,那么根本不可能,Django admin中的缓存速度较慢。稍后,我将尝试查看是否意外地在admin视图中缓存了查询,从理论上讲,这会使查询运行得更快。不过,我同意这种逻辑上的荒谬