| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> Excellent Tip to avoid recursive work
Even when I tried it before, when I saw a function called recursively
several times I tried to encapsulate as a subquery but I didn't got an
important improvement
The trick comes from Connor McDonald all the trick resides in the where
rownum=1 in the query to dual
It change from timing 22352 to 411
And from 796015 to 3595 consistent gets
Thanks Connor
1 select sum(trc_monto_bob/1000) from transac_me 2* where trc_empresagestion = db_utl_me SQL> / SUM(TRC_MONTO_BOB/1000)
103886852
real: 22352
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=342 Card=1 Bytes=9) 1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'TRANSAC_ME' (Cost=342 Card=15819
6 Bytes=1423764)
Statistics
316979 recursive calls
0 db block gets
796015 consistent gets
3516 physical reads
0 redo size
268 bytes sent via SQL*Net to client
417 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> edit
Escrito fichero afiedt.buf
1 select sum(trc_monto_bob/1000) from transac_me,( select db_utl_me enano
fr
m dual where rownum=1)
2* where trc_empresagestion = enano
SQL> /
SUM(TRC_MONTO_BOB/1000)
103886852
real: 411
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=345 Card=1 Bytes=201
1)
1 0 SORT (AGGREGATE)
2 1 HASH JOIN (Cost=345 Card=158196 Bytes=318132156)
3 2 VIEW (Cost=2 Card=1 Bytes=2002)
4 3 COUNT (STOPKEY)
5 4 TABLE ACCESS (FULL) OF 'DUAL' (Cost=2 Card=1)
6 2 TABLE ACCESS (FULL) OF 'TRANSAC_ME' (Cost=342 Card=158
196 Bytes=1423764)
Statistics
14 recursive calls
0 db block gets
3595 consistent gets
3516 physical reads
0 redo size
268 bytes sent via SQL*Net to client
417 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
1 rows processed
SQL>
Juan Carlos Reyes Pacheco
OCP
Database 9.2 Standard Edition
-- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.htmlReceived on Thu May 06 2004 - 11:34:25 CDT
-----------------------------------------------------------------
![]() |
![]() |