Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Optimization: change in access path to one table changes join strategy to another table...

Re: Optimization: change in access path to one table changes join strategy to another table...

From: jaromir nemec <jaromir_at_db-nemec.com>
Date: Thu, 24 Aug 2006 17:25:35 +0200 (CEST)
Message-ID: <55636.213.162.65.17.1156433135.bloek@pwebmail.utanet.at>


Hi John,

> When I query the regular table with some other (indexed)
> column, forcing the optimizer to do a table lookup for the later join
> key, the join strategy to the inline view changes (to the worse - nested
> loop acces with index range scans becomes hash join with full table
> scan).

Small correction.
the second execution plan you provided performs nested loop with full scan on the outer table.

>
> NESTED LOOPS 8 K 185 K 8686
> TABLE ACCESS FULL DBASM0SEMS.TSM29_MULTIMEDIA 8 K 109 K 29
> TABLE ACCESS BY INDEX ROWID
> DBASM0SEMS.TSM17_ITEM 1 9 1
>
> INDEX UNIQUE SCAN DBASM0SEMS.ISM17_P01 1 0

>
> Why is that?

My guess:
The predicates
sm66_seat_num = 1234
AND
itemtype.sm29_logo_seat_num (+) = tsm66.sm66_seat_num are transformed to
itemtype.sm29_logo_seat_num = 1234
i.e. the table tsm29_multimedia in the inline view is accessed with the predicate
tsm29_multimedia.sm29_logo_seat_num = 1234 leading to index access with cardinality = 1

There is no comparable join predicate for sm66_multi_des Something like
itemtype.some_column (+) = tsm66. sm66_multi_des Not to mention the UPPER and LIKE in the switched predicate. From this reason the predicate
UPPER(sm66_multi_des) LIKE '1234'
can't be applied on the table tsm29_multimedia; the in-line view is evaluated completely and the filter is applied in the second join.

Regards,

Jaromir

--
http://www.freelists.org/webpage/oracle-l
Received on Thu Aug 24 2006 - 10:25:35 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US