Java Mailing List Archive

http://www.dba.5341.com/

Home » Home (12/2007) » oracle l »

optimizer OR transformation

Li-Shan Cheng

2006-08-01


Hi

I have some queries with ORs in 8i which ahd this plan

   0      SELECT STATEMENT Optimizer=RULE
   1    0   SORT (ORDER BY)
   2    1     TABLE ACCESS (BY INDEX ROWID) OF 'S_LST_OF_VAL'
   3    2       INDEX (RANGE SCAN) OF 'S_LST_OF_VAL_U2' (UNIQUE)


in 9i this changed to

   0      SELECT STATEMENT Optimizer=RULE
   1    0   SORT (ORDER BY)
   2    1     CONCATENATION
   3    2       TABLE ACCESS (BY INDEX ROWID) OF 'S_LST_OF_VAL'
   4    3         INDEX (RANGE SCAN) OF 'S_LST_OF_VAL_U1' (UNIQUE)
   5    2       TABLE ACCESS (BY INDEX ROWID) OF 'S_LST_OF_VAL'
   6    5         INDEX (RANGE SCAN) OF 'S_LST_OF_VAL_U1' (UNIQUE)
   7    2       TABLE ACCESS (BY INDEX ROWID) OF 'S_LST_OF_VAL'
   8    7         INDEX (RANGE SCAN) OF 'S_LST_OF_VAL_U1' (UNIQUE)
   9    2       TABLE ACCESS (BY INDEX ROWID) OF 'S_LST_OF_VAL'
  10    9         INDEX (RANGE SCAN) OF 'S_LST_OF_VAL_U1' (UNIQUE)

I was wondering which parameter (hidden of course) affects this change of plans?

I have checked _or_expand_nvl_predicate and _no_or_expansion but doesnt seem they are affceting the behaviour.

Using RBO by the way.

Thanks


©2008 dba.5341.com - Jax Systems, LLC, U.S.A.