Jak mogę wstawić ponad milion wierszy w Oracle w optymalny sposób dla następującego procdeure? Zawiesza się, jeśli zwiększę pętlę FOR do miliona wierszy.Najszybszy sposób wstawienia miliona wierszy w Oracle
create or replace procedure inst_prc1 as
xssn number;
xcount number;
l_start Number;
l_end Number;
cursor c1 is select max(ssn)S1 from dtr_debtors1;
Begin
l_start := DBMS_UTILITY.GET_TIME;
FOR I IN 1..10000 LOOP
For C1_REC IN C1 Loop
insert into dtr_debtors1(SSN) values (C1_REC.S1+1);
End loop;
END LOOP;
commit;
l_end := DBMS_UTILITY.GET_TIME;
DBMS_OUTPUT.PUT_LINE('The Procedure Start Time is '||l_start);
DBMS_OUTPUT.PUT_LINE('The Procedure End Time is '||l_end);
End inst_prc1;
Nie polecam używania do tego celu kursora. Ponieważ kursor zmniejszy Twoją wydajność. –
Sprawdź to [link] (http://www.orafaq.com/wiki/Oracle_Row_Generator_Techniques) – haki