oracle / netezza只执行一次子查询

时间:2014-02-10 16:20:20

标签: oracle netezza

在此查询中:

select L1.*, L2.* from (select t1.col1, max(t1.col2) from ($subquery) t1, group by t1.col1) L1, ($subquery) L2 where L1.col1 = L2.col1

Oracle / Netezza只执行一次$子查询吗?还是两次?

1 个答案:

答案 0 :(得分:1)

Oracle将执行两次。 (实际上这并不是100%准确。它只会执行一次主(复合)查询,但可能会以2种不同的时间/方式访问子查询表。)

您应该使用with来优化这种方式。

(否则你也可以使用MAX()OVER(PARTITION BY ....)来做类似的事情。)