在Django中使用临时表的联接作为IN的替代

时间:2018-10-24 17:07:07

标签: python django postgresql django-models django-orm

在Django中,通常执行以下操作

MyModel.objects.filter(id__in=[huge array])

但是,效率不是很高,如下面的答案所述:https://dba.stackexchange.com/questions/91247/optimizing-a-postgres-query-with-a-large-in

鉴于您正在使用ORM,在Django中复制上述答案的一种好方法是什么。还是您必须将整个查询下拉至原始sql。

我要寻找的是如果您有一个查询集,是否有一种很好的方法将该查询集与您创建的临时表(可能在原始sql中)结合在一起。

1 个答案:

答案 0 :(得分:0)

您可以使用select_related选项来过滤将起到in效果的第二个表(另一个模型)。

类似这样的答案:Django select_related filter

在可能的情况下,我会将其用于大型IN