Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Tuning query
I have two (very) similar queries which execute in radically different
timescales.
Query 1.
SELECT
'A' AS tab,
t.dim1,
rr3dim3.rel_value AS r3dim3,
t.dim3,
rr0dim4.rel_value AS r0dim4,
t.dim4,rr0dim5.rel_value AS r0dim5, t.dim5, t.dim6, t.period,
aglrelvalue rr3dim3, aglrelvalue rr0dim4, aglrelvalue rr0dim5,
AND t.dim2 IN ('1010','3010','3110') AND t.period >= 200301 AND t.period <= 200301 AND t.client IN ('B1','DE','AC')
t.dim5, t.dim6, t.period,
4 asc, 6 asc, 7 asc,
takes 11 secs to execute and has the execution plan
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1696 Card=10 Bytes=1 300) 1 0 SORT (ORDER BY) (Cost=1696 Card=10 Bytes=1300) 2 1 FILTER 3 2 SORT (GROUP BY) (Cost=1696 Card=10 Bytes=1300) 4 3 HASH JOIN (Cost=1690 Card=101 Bytes=13130) 5 4 NESTED LOOPS (Cost=55 Card=4 Bytes=416) 6 5 HASH JOIN (Cost=40 Card=1 Bytes=85) 7 6 INDEX (RANGE SCAN) OF 'AIAGLRELVALUE1' (UNIQUE ) (Cost=3 Card=63 Bytes=1197) 8 6 NESTED LOOPS (Cost=36 Card=106 Bytes=6996) 9 8 INLIST ITERATOR 10 9 TABLE ACCESS (BY INDEX ROWID) OF 'AGLRELVA LUE' (Cost=6 Card=1 Bytes=19) 11 10 INDEX (RANGE SCAN) OF 'AIAGLRELVALUE2' ( NON-UNIQUE) (Cost=3 Card=1) 12 8 INLIST ITERATOR 13 12 TABLE ACCESS (BY INDEX ROWID) OF 'AAGDAENQ 3' (Cost=30 Card=7785 Bytes=365895) 14 13 INDEX (RANGE SCAN) OF 'I_AAGDAENQ3' (NON -UNIQUE) (Cost=25 Card=7785) 15 5 TABLE ACCESS (BY INDEX ROWID) OF 'AGLRELVALUE' ( Cost=15 Card=27836 Bytes=528884) 16 15 INDEX (RANGE SCAN) OF 'AIAGLRELVALUE2' (NON-UN IQUE) (Cost=2 Card=27836) 17 4 TABLE ACCESS (FULL) OF 'AGLRELVALUE' (Cost=1634 Ca rd=10187 Bytes=264862)
meanwhile
query2
SELECT
'A' AS tab,
t.dim1,
rr3dim3.rel_value AS r3dim3,
t.dim3,
rr0dim4.rel_value AS r0dim4,
t.dim4,
rr0dim5.rel_value AS r0dim5,
t.dim5, t.dim6, t.period,
aglrelvalue rr3dim3, aglrelvalue rr0dim4, aglrelvalue rr0dim5,
AND t.dim2 IN ('1010','3010','3110') AND t.period >= 200301 AND t.period <= 200301 AND t.client = 'AC'
t.dim5, t.dim6, t.period,
t.dim2, t.client, t.client
4 asc, 6 asc, 7 asc,
takes 25 minutes to run and has the execution plan
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1693 Card=3 Bytes=39 0) 1 0 SORT (ORDER BY) (Cost=1693 Card=3 Bytes=390) 2 1 FILTER 3 2 SORT (GROUP BY) (Cost=1693 Card=3 Bytes=390) 4 3 NESTED LOOPS (Cost=1689 Card=25 Bytes=3250) 5 4 NESTED LOOPS (Cost=55 Card=1 Bytes=104) 6 5 HASH JOIN (Cost=40 Card=1 Bytes=85) 7 6 INDEX (RANGE SCAN) OF 'AIAGLRELVALUE1' (UNIQUE ) (Cost=3 Card=63 Bytes=1197) 8 6 NESTED LOOPS (Cost=36 Card=107 Bytes=7062) 9 8 INLIST ITERATOR 10 9 TABLE ACCESS (BY INDEX ROWID) OF 'AGLRELVA LUE' (Cost=6 Card=1 Bytes=19) 11 10 INDEX (RANGE SCAN) OF 'AIAGLRELVALUE2' ( NON-UNIQUE) (Cost=3 Card=1) 12 8 INLIST ITERATOR 13 12 TABLE ACCESS (BY INDEX ROWID) OF 'AAGDAENQ 3' (Cost=30 Card=7785 Bytes=365895) 14 13 INDEX (RANGE SCAN) OF 'I_AAGDAENQ3' (NON -UNIQUE) (Cost=25 Card=7785) 15 5 TABLE ACCESS (BY INDEX ROWID) OF 'AGLRELVALUE' ( Cost=15 Card=27835 Bytes=528865) 16 15 INDEX (RANGE SCAN) OF 'AIAGLRELVALUE2' (NON-UN IQUE) (Cost=2 Card=27835) 17 4 TABLE ACCESS (FULL) OF 'AGLRELVALUE' (Cost=1634 Ca rd=10187 Bytes=264862)
-- Niall Litchfield Oracle DBA Audit Commission UK ***************************************** Please include version and platform and SQL where applicable It makes life easier and increases the likelihood of a good answer ******************************************Received on Mon Dec 02 2002 - 09:00:12 CST
![]() |
![]() |