如何优化Postgres的SQL查询?

时间:2017-11-30 19:38:14

标签: sql postgresql hibernate postgresql-performance

我有一个类似如下的SQL查询:

select *
from TableA
  left outer join TableB on...
  left outer join TableC on...
  ...
  left outer join TableN on...

where
  TableA.id in (subquery);

这个查询需要很长时间才能执行,我检查了它的执行计划,并发现它首先进行了连接,然后是where。但是,连接需要很长时间才能完成。我针对Oracle运行相同的查询,Oracle进行了优化,以便它将“where”部分与连接一起进行,因此时间很短。

我的问题是:如何优化SQL查询以便Postgres可以先执行'where'部分?

PS:我无法使用内部联接将子查询添加到“from”部分,因为我使用的是Hibernate,并且它不支持“from”部分中的子查询。

1 个答案:

答案 0 :(得分:0)

正如您对帖子的评论中已广泛讨论的那样," FROM(子查询)tblalias"方法可能仍然有效,所以这里又是伪代码:

select * from (
  select * from TableA where id in (subquery) 
) tblA
left outer join TableB on...
left outer join TableC on...
...
left outer join TableN on...

但是 - 谁知道明确,因为伪代码无法测试...