【发布时间】:2019-03-29 04:39:33
【问题描述】:
在 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 中)连接的好方法。
【问题讨论】:
-
最快的操作很可能是将 ID 放入表中,索引列,然后对 MyModel 进行存在检查。
-
[huge array]是如何填充的? -
你能发布你的模型吗?
-
[huge array]的填充方式不是很重要。只需假设它从一开始就存在,填充它所花费的时间不是考虑的一部分。如果有一种很好的方法可以将其转换为在 django 中使用模型,那么我对正在链接的答案中描述的方法更感兴趣。
标签: python django postgresql django-models django-orm