| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: How do I tune 'star' outer join in ORA73?
On Tue, 07 Mar 2000 20:49:58 GMT, michael_bialik_at_my-deja.com wrote:
> 1. It is NOT "star" type of query.
Oops, I'm sorry if I confused anyone.
> 2. Post EXPLAIN PLAN.
The exact query is like this:
SELECT ...
FROM A, B, C,
D, E, F, G,
H RXOPERATOR, H SUPERVISOR, I, J
WHERE B.ID_B (+) = A.ID_B AND C.ID_C (+) = B.ID_C AND D.ID_D (+) = A.ID_D AND E.ID_E (+) = A.ID_E AND F.ID_F (+) = A.ID_F AND G.ID_G (+) = A.ID_G
All join and sort expressions in the query are on indexed primary key columns. Statistics on all tables, columns and indexes have been computed. The execution plan looks like this:
SELECT STATEMENT Cost = 1586
SORT ORDER BY
HASH JOIN OUTER
NESTED LOOPS OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
TABLE ACCESS FULL A
TABLE ACCESS FULL D
TABLE ACCESS FULL H
TABLE ACCESS FULL H
TABLE ACCESS FULL I
TABLE ACCESS FULL G
TABLE ACCESS FULL J
TABLE ACCESS FULL F
TABLE ACCESS FULL E
TABLE ACCESS BY ROWID B
INDEX UNIQUE SCAN PKC_B
TABLE ACCESS FULL C
Response time: 17 seconds on a fast development server, several minutes on the slow server at the customer's.
> 3. Try using hints:
> SELECT /*+ ORDERED INDEX( B B_PK ) INDEX( C C_PK ) INDEX( D D_PK )
> INDEX( E E_PK ) */
After I have implemented your suggestion the plan changed as follows:
SELECT STATEMENT Cost = 5575
SORT ORDER BY
HASH JOIN OUTER
NESTED LOOPS OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
HASH JOIN OUTER
NESTED LOOPS OUTER
TABLE ACCESS FULL A
TABLE ACCESS BY ROWID B
INDEX UNIQUE SCAN PKC_B
TABLE ACCESS BY ROWID C
INDEX FULL SCAN PKC_C
TABLE ACCESS BY ROWID D
INDEX FULL SCAN PKC_D
TABLE ACCESS BY ROWID E
INDEX FULL SCAN PKC_E
TABLE ACCESS BY ROWID F
INDEX FULL SCAN PKC_F
TABLE ACCESS BY ROWID G
INDEX FULL SCAN PKC_G
TABLE ACCESS FULL H
TABLE ACCESS FULL H
TABLE ACCESS BY ROWID I
INDEX UNIQUE SCAN PKC_I
TABLE ACCESS BY ROWID J
INDEX FULL SCAN PKC_J
Response time: 22 sec on our server.
Thanks for your help,
Bart
Received on Wed Mar 08 2000 - 00:00:00 CST
![]() |
![]() |