我有这样的声明:
select qulified_name
from table
inner join references_table on references_table.id = table.ref_id
where references_table.type = 'x' and table.value in (... +110 000 ids)
这非常慢。(网络应用程序崩溃并且没有得到结果。我在 rom-rb 的帮助下创建了我的声明,这使用了续集。但这是我查看声明时得到的声明。
如果我像这样重写语句,与第一个版本相比,性能真的很好:
select qulified_name
from table
inner join (select unnest(array['#{references_id.join("','")}']) id ) as tmp on tmp.id = businesspartner_references.value
inner join references_table on references_table.id = table.ref_id
where references_table.type = 'x'
这样我可以在 3 秒内得到结果。
有人可以向我解释为什么会这样吗?我不明白。。