Dennis,

I tend to treat use of hints for exceptional cases only. With
collections CASTed as tables, I seem to have a generalized problem of
tables involved being scanned FULL (not using the available indexes)
and query response being slow. I can't seem to build a query with
collections and have it use the indexes.

I get a much better response if I:

a)parse the input collection parameter and use dynamic SQL with IN
list
b) use the RULK hint

We also Analyze all tables in the schema once a week and were hoping
that the cast based optimizer would have detailed information
available to use the correct access path.


--- DENNIS WILLIAMS <[EMAIL PROTECTED]> wrote:
> Sundeep - Have you tried other hints, like FIRST_ROWS? Or are you
> trying to
> avoid hints entirely?
> 
> Dennis Williams
> DBA, 40%OCP
> Lifetouch, Inc.
> [EMAIL PROTECTED] 
> 
> 
> -----Original Message-----
> Sent: Wednesday, February 05, 2003 5:30 PM
> To: Multiple recipients of list ORACLE-L
> 
> 
> Oracle 8.1.7.4 on HP-UX
> 
> I am using collections to pass multiple values from client to the
> database to gather values for more than input values. The queries
> produce the results but the without the RULE hint the response is
> dramatically slower. Following is just one of the examples but I
> have
> many many queries which exhibit the same behavior.  
> 
> Since RULE based optimization is headed for the chopping block we
> are
> wondering what is the alternative.
> 
> SELECT  eqp.equipment_id, 
>       eqp.manufacturer_code, 
>       eqp.model_num, 
>       eqp.equipment_serial_num, 
>       DECODE(SIGN(eqp.last_pm_performed_at_hrs -
> eqp.current_meter_reading_hrs),1,             
> 'SMU_ADJUSTED',eqp.last_pm_performed_at_hrs) smu_adjusted, 
>       eqp.productlink_equipment_code, 
>       ecps.pm_schedule_name, 
>       epp.performed_datetime, 
>       DECODE(epp.comment_text,NULL,1,0) comments_available, 
>         emr.reading_date, 
>       emr.meter_reading_value, 
>       equipment_event_log.event_status(eqp.equipment_id,2), 
>       equipments_next_pm_due.pms_due_list(eqp.equipment_id)
> pms_due_list, 
>       equipments_next_pm_due.perform_at_hrs_cnt(eqp.equipment_id)
> next_pm_hrs 
>    FROM equipments eqp, 
>         equipment_meter_readings emr, 
>       equipment_pm_performed epp, 
>       equipment_class_pm_schedules ecps, 
>       TABLE(CAST(id_table_t(1000000071,1000000072,1000000073,1000000074)
> AS id_table_t)) eqp_list 
>   WHERE eqp.epp_id_last_pm_performed = epp.epp_id (+) 
>     AND eqp.emr_id_current_meter_reading = emr.emr_id (+) 
>     AND epp.ecps_id = ecps.ecps_id (+) 
>     AND eqp.equipment_id = eqp_list.column_value
> /
> 
> Plan:
> SELECT STATEMENT Hint=CHOOSE          8 K             510      
>   HASH JOIN OUTER             8 K     582 K   510                  
>     HASH JOIN OUTER           8 K     510 K   497                  
>       HASH JOIN OUTER         8 K     390 K   489                   
>         HASH JOIN             8 K     279 K   287                   
>           COLLECTION ITERATOR CONSTRUCTOR FETCH                        
>           TABLE ACCESS FULL   EQUIPMENTS      192 K   6 M     256
>         TABLE ACCESS FULL     EQUIPMENT_METER_READINGS        221 K   2 M
> 151           
>                        
>       TABLE ACCESS FULL       EQUIPMENT_PM_PERFORMED  96      1 K     
>     TABLE ACCESS FULL EQUIPMENT_CLASS_PM_SCHEDULES    2 K     22 K    4  
> 
> Following is the Plan with /*+ RULE */ hint has the expected fast
> response and the desired plan:
> 
> SELECT STATEMENT Hint=HINT: RULE                               
>   NESTED LOOPS OUTER                                           
>     NESTED LOOPS OUTER                                                      
>       NESTED LOOPS OUTER                                       
>         NESTED LOOPS                                           
>           COLLECTION ITERATOR CONSTRUCTOR FETCH                        
>           TABLE ACCESS BY INDEX ROWID EQUIPMENTS               
>             INDEX UNIQUE SCAN EQP_PK                           
>         TABLE ACCESS BY INDEX ROWID   EQUIPMENT_PM_PERFORMED   
>           INDEX UNIQUE SCAN   EPP_PK                           
>       TABLE ACCESS BY INDEX ROWID     EQUIPMENT_CLASS_PM_SCHEDULES 
>         INDEX UNIQUE SCAN     ECPMS_PK                         
>     TABLE ACCESS BY INDEX ROWID       EQUIPMENT_METER_READINGS          
>       INDEX UNIQUE SCAN       EMR_PK    
> 
> I have tried both versions IN (TABLE(CAST( as a predicate and as a
> pseudo-table in FROM (as in the query above) and it made no
> difference to the plan. I searched askTOM and heard similar
> sentiments about performance being echoed by other users but no
> solutions.  
> 
> Any tips or insights as to how to avoid the full table scans (all
> of
> which are 10-100M in size) of the large table without the RULE
> hint.
> A more thorough explanation of what is happening and why would be a
> bonus.
> 
> TIA
>               
> 
> =====
> 
> Sundeep Maini 
> Consultant 
> Currently on Assignement at Caterpillar Peoria
> [EMAIL PROTECTED] 
> 
> __________________________________________________
> Do you Yahoo!?
> Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
> http://mailplus.yahoo.com
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: sundeep maini
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting
> services
>
---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (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).
> -- 
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> -- 
> Author: DENNIS WILLIAMS
>   INET: [EMAIL PROTECTED]
> 
> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
> San Diego, California        -- Mailing list and web hosting
> services
>
---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: [EMAIL PROTECTED] (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).
> 


=====

Sundeep Maini 
Consultant 
Currently on Assignement at Caterpillar Peoria
[EMAIL PROTECTED] 

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: sundeep maini
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (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).

Reply via email to