我遇到了性能问题,需要替换查询语句的一部分。现在,我有以下内容:
select count(*) FROM "mytable" WHERE "field" IN ('v1', 'v2', ..., 'vN');
这可以翻译成Django ORM:
Mytable.objects.all().filter(field__in=[myvalues]).count()
我需要执行以下操作:
select count(*) FROM "mytable" JOIN (values ('v1', 'v2', ..., 'vN')) as lookup(value) on lookup.value = "mytable".field;
是否可以将其添加到ORM?我需要使用ORM,因为我已经有了其他过滤器。最坏的情况是我想到获取查询字符串并手动添加...
我正在使用Postgresql 9.6
答案 0 :(得分:0)
一遍又一遍的文档后,我发现了一种方法。我什至发现a patch不久前没有合并。
它实际上并没有进行连接,但是比直接使用View controller-based status bar appearance
更快。
我正在执行的是执行Django 2.0中引入的RawSQL(),结果我再次执行YES
。
这是一个代码示例:
__in
现在只需几毫秒而不是几分钟!