1

テーブルの現金残高を計算し、それらを別のテーブルに挿入しようとしています。年の各日付の残高を計算し、それを残高テーブルに挿入するループがあります。

問題は、この sql にほぼ 30 分かかることです。

declare
    d_i number :=1
begin
    loop
        insert into my_cash_table
        select 
               portfolio , 
               book_name, position_type, currency, cash_balance_cad
        from 
               cash_balance cb
               -- plus bunch of code here
               ...
        where  bal_date in &sdate + d_i
        group by book_name, position_type, currency;

        d_i := d_i + 1;   

        if d_i > 366 then
            exit;
        end if;
    end loop;
end;

ループ内のすべてのデータを取得してから一括挿入できるように最適化する方法はありますか? また、ループ内で単純に select ステートメントを実行することはできますか?つまり、挿入を行わずに実行できますか?

ありがとうございました

4

1 に答える 1