【发布时间】:2014-07-25 12:23:42
【问题描述】:
我们的数据库中有一些运行缓慢的查询,我认为其中一些可以通过更改底层 SQL 来解决。
鉴于以下情况:
Model.objects.filter(rel_id__in=[1,2,3])
输出(删节):
SELECT all, the, fields FROM "model" WHERE ("rel_id" IN (1, 2, 2))
我想要的是将 SQL 更改为:
SELECT all, the, fields FROM "model" WHERE ("rel_id" = ANY(array[1, 2, 2]))
我知道这可能不是最佳方法,但EXPLAIN ANALYSE 在第二个查询中返回的数字要低得多。
所以我的问题是,如何从 QuerySet 查找中获取第二个 SQL 查询?
提前致谢
【问题讨论】:
-
这很奇怪。请显示两个查询计划。通常这两个是等价的——
IN在规划 IIRC 的早期就变成了= ANY。
标签: django postgresql-9.1