Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Large Update .. Please Advice
I have Oracle 8iR3 (8.1.7.4), the columns updated are not indexed
OS : AIX 4.3.3 , RAID 5
I changed my query to this :
update /*+ index (a CONNECT_TIME_IDX) */ tvbill_cisco_cdrs a
set
(a.orig_called_number,a.release_source,a.h323_voice_quality,a.gtd_term_cic,a.coder_type_rate)
=
(select case when H323CALLTYPE||H323CALLORIGIN = 'TA' then ORIGCALLEDNUM
else null end,
RELEASESOURCE, H323VOICEQUALITY, GTDTERMCIC, CODERTYPERATE
from cisco_updates b
where b.h323confid=a.h323_conf_id and b.h323calltype=a.h323_call_type and b.H323CALLORIGIN=a.h323_call_origin and b.h323connecttime=a.h323_connect_time and b.acctoutoctets=a.acct_output_octets and nvl(b.h323remoteaddress,'x')=nvl(a.h323_remote_address,'x')and rownum<2)
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
UPDATE STATEMENT Optimizer Mode=CHOOSE 292 K 2869375 UPDATE BILLING_MASTER.TVBILL_CISCO_CDRS TABLE ACCESS BY LOCAL INDEX ROWID BILLING_MASTER.TVBILL_CISCO_CDRS 292 K
31 M 2869375 6 6 INDEX RANGE SCAN BILLING_MASTER.CONNECT_TIME_IDX 292 K 139206 6
"agis" <agstamy_at_yahoo.com> wrote in message
news:d2aa3279.0501310344.66fdd550_at_posting.google.com...
> Hello to all,
>
> i must do a large update .
>
> I have 2 tables with 37 million records tvbill_cisco_cdrs partition
> (log_2004_12)
> and cisco_updates . I want by selecting from cisco_updates to update
> some columns on tvbilL_cisco_cdrs , i am doing this :
>
> update /*+ index (a CONNECT_TIME_CONF_ID_IDX) */ tvbill_cisco_cdrs a
> set
> (a.orig_called_number,a.release_source,a.h323_voice_quality,a.gtd_term_cic,a.coder_type_rate)
> =
> (select /*+ FIRST_ROWS */ case when H323CALLTYPE||H323CALLORIGIN =
> 'TA' then ORIGCALLEDNUM else null end,
> RELEASESOURCE, H323VOICEQUALITY, GTDTERMCIC, CODERTYPERATE
> from cisco_updates b
> where rowid between 'AAAEeJABwAAAAAJAAA' and
> 'AAAEeJABwAAAXQICcQ'
> and b.h323confid=a.h323_conf_id
> and b.h323calltype=a.h323_call_type
> and b.H323CALLORIGIN=a.h323_call_origin
> and b.h323connecttime=a.h323_connect_time
> and b.acctoutoctets=a.acct_output_octets
> and nvl(b.h323remoteaddress,'x')=nvl(a.h323_remote_address,'x')
> and rownum<2)
> where h323_connect_time>=to_date('01/12/2004','DD/MM/YYYY')
> and h323_connect_time<to_date('01/01/2005','DD/MM/YYYY')
> and a.h323_conf_id in (select /*+ FIRST_ROWS */ h323confid from
> cisco_updates c where rowid between 'AAAEeJABwAAAAAJAAA' and
> 'AAAEeJABwAAAXQICcQ')
> and a.release_source is null;
>
> and the rowid ranges were found from table split by rowid.
>
> Can anyone suggest an other way because this takes allmost 2 days to
> complete
Received on Wed Feb 02 2005 - 06:52:49 CST