!! Please do not post Off Topic to this List !!
Using hints don't force Oracle to use the path choosen
when you write the query. Much more true in a join
operation where Oracle has many choices. What you do
is to restrict options. However Oracle have to look at
the statistics for a final decision.
Appart from what I said, are your statistics accurated
?. Try without aliases not only in the hint, also for
the whole query. Are both tables indexed ?. Maybe is
because of the cost of the unique scan of the index.
The emp_id it is a sequence. If this is the case,
maybe the clustering of the index is too high.
Regards.
- "Shevtsov, Eduard" <EShevtsov_at_flagship.ru> wrote:
> !! Please do not post Off Topic to this List !!Hi
> List,
>
> did anybody notice that sometimes CBO ignores USE_NL
> hint without ORDERED
>
> The following example was taken from oracle docs:
>
> SQL>
> SQL>
> SQL> select name, value
> 2 from v$parameter
> 3 where name = 'optimizer_mode';
>
> NAME
> -----------------------------------
> VALUE
> -----------------------------------
> optimizer_mode
> CHOOSE
>
> SQL> desc employees
> Name
> --------------------
> EMP_ID
> MGR_ID
> LAST_NAME
> FIRST_NAME
> HIREDATE
> JOB
> SALARY
>
> SQL> desc courses
> Name
> --------------------
> CRS_ID
> SHORT_NAME
> DESCRIPTION
> DAYS
> DEV_ID
> CAT_ID
> LAST_UPDATE
>
> SQL> explain plan set statement_id = '37'
> 2 for
> 3 select /*+ ordered use_nl(e) */
> 4 e.first_name
> 5 , e.last_name
> 6 , c.short_name
> 7 from courses c, employees e
> 8 where e.emp_id = c.dev_id
> 9 ;
>
> Explained.
>
> SQL> @opt\explain_n
> statement id: 37
>
> Query Plan
> ------------------------------------------
> SELECT STATEMENT Cost = 1022
> NESTED LOOPS
> TABLE ACCESS FULL COURSES
> TABLE ACCESS BY INDEX ROWID EMPLOYEES
> INDEX UNIQUE SCAN EMP_PK
>
> SQL> ed
> Wrote file afiedt.buf
>
> 1 explain plan set statement_id = '38'
> 2 for
> 3 select /*+ use_nl(e) */
> 4 e.first_name
> 5 , e.last_name
> 6 , c.short_name
> 7 from courses c, employees e
> 8* where e.emp_id = c.dev_id
> SQL> /
>
> Explained.
>
> SQL> @opt\explain_n
> statement id: 38
>
> Query Plan
> -----------------------------------------
> SELECT STATEMENT Cost = 84
> HASH JOIN
> TABLE ACCESS FULL COURSES
> TABLE ACCESS FULL EMPLOYEES
>
>
> QUESTION: why does the CBO ignore USE_NL without
> ORDERED ?
>
>
> Regards,
> Ed
> --
> Please see the official ORACLE-L FAQ:
> http://www.orafaq.com
> --
> Author: Shevtsov, Eduard
> INET: EShevtsov_at_flagship.ru
>
> Fat City Network Services -- (858) 538-5051 FAX:
> (858) 538-5051
> San Diego, California -- Public Internet
> access / Mailing Lists
>
> To REMOVE yourself from this mailing list, send an
> E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of
> 'ListGuru') and in
> the message BODY, include a line containing: UNSUB
> ORACLE-L
> (or the name of mailing list you want to be removed
> from). You may
> also send the HELP command for other information
> (like subscribing).
Eng. Christian Trassens
Senior DBA
Systems Engineer
ctrassens_at_yahoo.com
ctrassens_at_hotmail.com
Phone : 541149816062
Terrorist Attacks on U.S. - How can you help?
Donate cash, emergency relief information
http://dailynews.yahoo.com/fc/US/Emergency_Information/
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Christian Trassens
INET: ctrassens_at_yahoo.com
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
Received on Thu Sep 13 2001 - 10:21:46 CDT