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

Home -> Community -> Usenet -> c.d.o.server -> MOST EFFICIENT BULK UPDATE?

MOST EFFICIENT BULK UPDATE?

From: Michael O <druanthia_at_hotmail.com>
Date: 31 Oct 2002 00:10:10 -0800
Message-ID: <734b0477.0210310010.574a6789@posting.google.com>


Hello. I have a table in a Data Warehouse (doc_sumr01) which contains records that are each a single line of a multi-line document. Each document has a document number (doc_nbr) and the line item value (doc_val), as well as an empty summary field (doc_sum_val). There are about a million records in this table. I want to sum up the total value of each document and put the summed value into the (doc_sum_val) field for each record (don't even think about non-normalization issues, this is a data warehouse used for reporting). I have created a self-joining update statement, but this is as slow as our White House pResident. So I am seeking an alternative, possibly using FORALL. Any suggestions?

MY TABLE (simplified):

 DOC_KEY                   NOT NULL NUMBER
 DOC_CODE                  NOT NULL VARCHAR2(2)
 DOC_NBR                   NOT NULL VARCHAR2(10)
 DOC_SUM_VAL               NOT NULL NUMBER(15,2)
 DOC_VAL                   NOT NULL NUMBER(15,2)


SAMPLE VALUES: DOC_KEY DOC_CODE DOC_NBR DOC_SUM_VAL DOC_VAL

1        OA        100001   0            5.00
2        OA        100001   0            10.00
3        OA        100005   0            12.00
4        OA        100005   0            13.00
5        OA        100007   0            20.00


EXPECTED VALUES AFTER UPDATE:
DOC_KEY DOC_CODE DOC_NBR DOC_SUM_VAL DOC_VAL

1        OA        100001   15.00        5.00
2        OA        100001   15.00        10.00
3        OA        100005   25.00        12.00
4        OA        100005   25.00        13.00
5        OA        100007   20.00        20.00


SAMPLE UPDATE STATEMENT:   UPDATE doc_sumr01 ds1
  SET doc_sum_val = (

      SELECT SUM(ds2.doc_val)
      FROM doc_sumr01 ds2
      WHERE ds2.doc_nbr = ds1.doc_nbr
        AND ds2.doc_code = 'OA');


ANY HELP IS APPRECIATED!!! Received on Thu Oct 31 2002 - 02:10:10 CST

Original text of this message

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