Всем привет! Разогнал такой запрос:
select ..., ..., ...,
ht.X, ht.Y, ht.Z,
..., ..., ...
from MidlTable mt, HugeTable ht
where mt.id = ht.mt_id(+)
and mt.SomeFld = SomeValue
следущим образом:
select ..., ..., ...,
( select min( X ) from HugeTable where mt_id = mt.id ) as X
( select min( Y ) from HugeTable where mt_id = mt.id ) as Y
( select min( Z ) from HugeTable where mt_id = mt.id ) as Z
..., ..., ...
from MidlTable mt
and mt.SomeFld = SomeValue
Понятно, что если бы понадобилось не 3 поля, а много полей из HugeTable то такое бы не прокатило!
Разогнал таким методом примерно в 8 раз! (т.к. отпадает FullScan по HugeTable, которая значительно больше чем MidlTable )
Подозреваю, есть более элегантные решения...
____________________________________________________________
сейчас работаю на: Oracle 11.1.0.7.0, 64bit, standard edition, SLES-10. APEX 3.2