Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

im using oracle 12c. select query executing faster but insert is getting longer

User_ROTJDMay 20 2022 — edited May 20 2022

there are more than 1crore rows in temp_final_consolidation table. here is the insert code. it getting more than 5 days to insert the record into tem_age_consolidate table. anyone please help to rectify the issue. here is my code. table structure is already created using the same query. while inserting its getting longer.
for below distinct row are 12
ls_sql := 'select distinct(sub_fund_code) from temp_final_consolidated';
OPEN ref_cur_c1 FOR ls_sql;
LOOP
FETCH Ref_cur_c1
INTO ls_sub_fund;
EXIT WHEN ref_cur_c1%NOTFOUND;

 ls\_sql := Q'# INSERT INTO TEMP\_AGE\_CONSOLIDATED  
  with temp\_fc as (select \* from temp\_final\_consolidated where sub\_fund\_code=:sub\_fund\_code)  
      SELECT f.\*,  
        f.new\_to\_age new\_to\_age1  
   FROM (SELECT e.\*,  
   row\_number() over(PARTITION BY product\_code, brokerage\_type, report\_description, date\_flag\_for\_rate\_selection, folio\_no || purch\_id || cons\_code || brok\_dlr\_code || brok\_dlr\_catg, asset\_class || sub\_fund\_code || scheme\_code, source\_asset\_class || source\_sub\_fund\_code || source\_scheme\_code, sys\_regn\_to\_date, sys\_regn\_from\_date, trade\_date\_to, trade\_date\_from, ter\_location, transaction\_head, sub\_type, from\_amount, to\_amount, brokerage\_rate , new\_from\_age, new\_to\_age||adj\_advance\_upfront ORDER BY product\_code, brokerage\_type, report\_description, new\_from\_age, new\_to\_age) rank1   
  FROM (  
    SELECT MIN(d.from\_age) over(PARTITION BY product\_code, brokerage\_type, report\_description, date\_flag\_for\_rate\_selection, folio\_no || purch\_id || cons\_code || brok\_dlr\_code || brok\_dlr\_catg, asset\_class || sub\_fund\_code || scheme\_code, source\_asset\_class || source\_sub\_fund\_code || source\_scheme\_code, sys\_regn\_to\_date, sys\_regn\_from\_date, trade\_date\_to, trade\_date\_from, ter\_location, transaction\_head, sub\_type, from\_amount, to\_amount, brokerage\_rate, new\_to\_age||adj\_advance\_upfront ORDER BY product\_code, brokerage\_type, report\_description, new\_to\_age) new\_from\_age,  
    d.\*  
    FROM (SELECT MAX(to\_age) over(PARTITION BY product\_code, brokerage\_type, report\_description, date\_flag\_for\_rate\_selection, folio\_no || purch\_id || cons\_code || brok\_dlr\_code || brok\_dlr\_catg, asset\_class || sub\_fund\_code || scheme\_code, source\_asset\_class || source\_sub\_fund\_code || source\_scheme\_code, sys\_regn\_to\_date, sys\_regn\_from\_date, trade\_date\_to, c.trade\_date\_from, ter\_location, transaction\_head, sub\_type, from\_amount, to\_amount, brokerage\_rate, c.root\_from\_age||adj\_advance\_upfront ORDER BY root\_from\_age) new\_to\_age,  
            c.\*  
    FROM (SELECT c.\*,  
      connect\_by\_root from\_age AS root\_from\_age  
      FROM temp\_fc c  
     CONNECT BY PRIOR to\_age + 1 = from\_age AND  
        PRIOR  
         nvl(brokerage\_rate, 0) = nvl(brokerage\_rate, 0) AND  
        PRIOR nvl(brokerage\_type, '$$') =  
         nvl(brokerage\_type, '$$') AND  
        PRIOR  
         nvl(product\_code, '$$') = nvl(product\_code, '$$') AND  
        PRIOR nvl(report\_description, '$$') =  
         nvl(report\_description, '$$') AND  
        PRIOR nvl(folio\_no, '$$') = nvl(folio\_no, '$$') AND  
        PRIOR nvl(purch\_id, 0) = nvl(purch\_id, 0) AND  
        PRIOR nvl(cons\_code, '$$') = nvl(cons\_code, '$$') AND  
        PRIOR  
         nvl(brok\_dlr\_code, '$$') = nvl(brok\_dlr\_code, '$$') AND  
        PRIOR  
         nvl(brok\_dlr\_catg, '$$') = nvl(brok\_dlr\_catg, '$$') AND  
        PRIOR  
         nvl(asset\_class, '$$') = nvl(asset\_class, '$$') AND  
        PRIOR  
         nvl(sub\_fund\_code, '$$') = nvl(sub\_fund\_code, '$$') AND  
        PRIOR  
         nvl(scheme\_code, '$$') = nvl(scheme\_code, '$$') AND  
        PRIOR nvl(source\_asset\_class, '$$') =  
         nvl(source\_asset\_class, '$$') AND  
        PRIOR nvl(source\_sub\_fund\_code, '$$') =  
         nvl(source\_sub\_fund\_code, '$$') AND  
        PRIOR nvl(source\_scheme\_code, '$$') =  
         nvl(source\_scheme\_code, '$$') AND  
        PRIOR nvl(load\_basis, '$$') = nvl(load\_basis, '$$') AND  
        PRIOR nvl(fee\_aging, '$$') = nvl(fee\_aging, '$$') AND  
        PRIOR nvl(transaction\_head, '$$') =  
         nvl(transaction\_head, '$$') AND  
        PRIOR nvl(sub\_type, '$$') = nvl(sub\_type, '$$') AND  
        PRIOR nvl(date\_flag\_for\_rate\_selection, '$$') =  
         nvl(date\_flag\_for\_rate\_selection, '$$') AND  
        PRIOR nvl(sys\_regn\_from\_date, '31-Dec-2999') =  
         nvl(sys\_regn\_from\_date, '31-Dec-2999') AND  
        PRIOR nvl(sys\_regn\_to\_date, '31-Dec-2999') =  
         nvl(sys\_regn\_to\_date, '31-Dec-2999') AND  
        PRIOR nvl(trade\_date\_from, '31-Dec-2999') =  
         nvl(trade\_date\_from, '31-Dec-2999') AND  
        PRIOR nvl(trade\_date\_to, '31-Dec-2999') =  
         nvl(trade\_date\_to, '31-Dec-2999') AND  
        PRIOR  
         nvl(ter\_location, '$$') = nvl(ter\_location, '$$') AND  
        PRIOR nvl(from\_amount, 0) = nvl(from\_amount, 0) AND  
        PRIOR nvl(to\_amount, 0) = nvl(to\_amount, 0) AND  
        PRIOR nvl(tf\_valuation\_basis, '$$') =  
         nvl(tf\_valuation\_basis, '$$')  
     ORDER BY brokerage\_rate,  
        folio\_no,  
        purch\_id,  
        cons\_code,  
        brok\_dlr\_code,  
        brok\_dlr\_catg,  
        asset\_class,  
        sub\_fund\_code,  
        scheme\_code,  
        source\_asset\_class,  
        source\_sub\_fund\_code,  
        source\_scheme\_code,  
        load\_basis,  
        fee\_aging,  
        transaction\_head,  
        sub\_type,  
        date\_flag\_for\_rate\_selection,  
        sys\_regn\_from\_date,  
        sys\_regn\_to\_date,  
        trade\_date\_from,  
        trade\_date\_to,  
        ter\_location,  
        from\_amount,  
        tf\_valuation\_basis) c) d) e) f  
      WHERE rank1 = 1 #';  
   
 execute immediate ls\_sql  
  using ls\_sub\_fund;  
 commit;  
END LOOP;  
CLOSE ref\_cur\_c1;

Comments

Processing

Post Details

Added on May 20 2022
6 comments
178 views