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

Django ORM Issue: Same Query Set on 2 different views runs as drastically different speeds

我有两个视图 -- 一个是管理站点的一部分,另一个是 public 可以访问的视图。

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

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()

每个视图都有完全相同的代码——这不是最漂亮的查询——但无论如何:在管理视图上——它的运行时间不到 1/4 秒。在 public Views.py 视图中——需要 8 分钟。我不知道为什么。 queryset.query 输出相同。变量(管理员通过 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)

这是两个视图上的查询输出——管理视图需要 <1/4 秒,public 视图需要大约 4-8 分钟,具体取决于对此查询集执行 count() 操作

没有可以更改时间的逻辑 -- 在执行计数之前,计时器服务器错误日志打印匹配。

两个查询集都未在计数之前进行评估——刚刚构建。到这里还是一头雾水。

我是个白痴——两个查询集不一样——还有一个额外的布尔字段被命中,我读错了日志——答案是查询集不一样—— - 这样就回答了这个问题。

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