Написал запрос вида:
Код:
select
decode(PAR,0,A1,B1) as F1,
...
decode(PAR,0,An,Bn) as Fn,
PAR
from
(select
nvl((select 1 from TBL1 where conditions and rownum = 1),0) as PAR
from TABLE t
where t.ID = :ID
)
Посмотрел план выполнения. В плане выполнения
раз написано:
Код:
COUNT STOPKEY
TABLE ACCESS BY INDEX ROWID
INDEX RANGE SCAN
Работает-то быстро, но меня сам результат очень смутил - неужели Оракл
раз выполняет подзапрос вместо того, чтобы выполнить его 1 раз и потом использовать результат его вычисления???
В гугле что-то ничего не обнаружил. Народ на работе не знает...