Re: Performance improvment -loop update.
From: yogi <yogigoyal_at_gmail.com>
Date: 24 Aug 2006 09:43:55 -0700
Message-ID: <1156437835.812687.317380_at_h48g2000cwc.googlegroups.com>
Date: 24 Aug 2006 09:43:55 -0700
Message-ID: <1156437835.812687.317380_at_h48g2000cwc.googlegroups.com>
[Quoted] [Quoted] well Dude sorry if find it offensive...i didn't mean that.....
but i got a solution for it..i am posting newly written proc here....it's taking only some seconds....
thanks a lot ppl...it was ny first time i asked for the help here..and i got nice response.
Cursor c1 is
Select a.SupplierCommentCode, a.CustomerCommentCode, a.PCCommentCode, b.rowid from Ems_Currentsoexpedite_Tmp a, ems_currentsoexpedite b where upper(trim(a.FPRunIdentifier)) = (Select decode(count(distinct fprunidentifier),1,'EOD','FIRST') From ems_currentsoexpedite_tmp Where upper(fprunidentifier)='EOD' ) and (a.SupplierCommentCode is not null or a.CustomerCommentCode is not null or a.PCCommentCode is not null) and a.demandorderid=b.demandorderid and a.partnumber=b.partnumber and a.expediteqty=b.expediteqty and a.detailstoexpedite=b.detailstoexpedite and nvl(a.daterequired, trunc(sysdate))=nvl(b.daterequired, trunc(sysdate)) and upper(b.fprunidentifier)='EOD';
Begin
-- For c1_rec in c1 Loop Begin Update ems_currentsoexpedite Set SupplierCommentCode = c1_rec.SupplierCommentCode, CustomerCommentCode = c1_rec.CustomerCommentCode, PCCommentCode = c1_rec.PCCommentCode where rowid=c1_rec.rowid; /* where upper(trim(FPRunIdentifier)) = 'EOD' and trim(ShopOrderNumber) = c1_rec.ShopOrderNumber and trim(nvl(RequestDate,trunc(sysdate))) = nvl(c1_rec.RequestDate,trunc(sysdate)) and trim(DemandOrderId) = c1_rec.DemandOrderId and trim(PartNumber) = c1_rec.PartNumber and nvl(promisedate,trunc(sysdate)) = nvl(c1_rec.promisedate,trunc(sysdate)) and nvl(trunc(daterequired),trunc(sysdate)) = nvl(c1_rec.daterequired,trunc(sysdate)); */ Exception when others then NULL; End; End loop; commit; -- v_stepid := v_stepid +10; -- -- Once the processing is done then delete the records from the temp table -- execute immediate 'Truncate table EMS_CURRENTSOEXPEDITE_TMP'; -- Commit; v_stepid := v_stepid +10; -- -- End update_emsaftnooncomments; DA Morgan wrote:Received on Thu Aug 24 2006 - 18:43:55 CEST
> yogi wrote:
> > Hi all,
> >
> > Please help me in tuning this query...
>
> You've got to be kidding. I help a lot of people and try to keep
> an open mind but your question, as I read it, is offensive.
>
> You provide no information about the system
> No SLA
> No Explain Plan
> You have a cursor loop which has been repeatedly sited as inefficient
> compared with array processing.
>
> And then you want someone else to do what you are paid for?
> And urgently too?
>
> No! Perhaps I just need some coffee. But if you are not qualified
> to do your job then quit.
>
> Now I'll go get some coffee. ;-)
> --
> Daniel A. Morgan
> University of Washington
> damorgan_at_x.washington.edu
> (replace x with u to respond)
> Puget Sound Oracle Users Group
> www.psoug.org