2014-02-10 93 views
0

在此查询: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 

将甲骨文/ Netezza公司执行$子查询只有一次?还是两次?

+0

使用ANSI'JOIN',而不是你的'WHERE'子句中加入请填写你的SQL。你也可以使用'WITH'子句来定义你的子查询,而不是写两次。 –

回答

1

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

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

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