ようこそ (Jyokoso) MY BLOG

いらっしゃいませ (hajimemashite) สำหรับผู้เข้าใหม่นะค่ะ ^^V

14 กันยายน 2555

Bulk Load Oracle 10G

declare
    l_cnt   pls_integer := 20;
    l_start number;
    l_run   number;
begin
    l_start := dbms_utility.get_time;
          for i in 1..l_cnt loop
                   explicit_cursor; <<  Cursor…open loop…
fetch into
          end loop;
    l_run := dbms_utility.get_time - l_start;
    dbms_output.put_line ('run 1 in .... '||l_run||' hsecs');
    
    l_start := dbms_utility.get_time;
          for i in 1..l_cnt loop
                    implicit_cursor_1; <<  Cursor…for loop
          end loop;
    l_run := dbms_utility.get_time - l_start;
    dbms_output.put_line ('run 2 in .... '||l_run||' hsecs');
    
    l_start := dbms_utility.get_time;
          for i in 1..l_cnt loop
                    implicit_cursor_2; <<  for (select)loop
          end loop;
    l_run := dbms_utility.get_time - l_start;
    dbms_output.put_line ('run 3 in .... '||l_run||' hsecs');
    
    l_start := dbms_utility.get_time;
          for i in 1..l_cnt loop
                    explicit_cursor_bulk; <<  Cursor…open loop…fetch…
bulk collect into…limit
          end loop;
    l_run := dbms_utility.get_time - l_start;
    dbms_output.put_line ('run 4 in .... '||l_run||' hsecs');
end;
run 1 in .... 311 hsecs <<  explicit_cursor แย่สุด
run 2 in .... 18 hsecs <<  implicit_cursor_1

เท่ากัน * หมายเหตุ ถ้าไม่ใช้ Ver. 10g ขึ้นไป 
 จะมีความเร็วไม่ต่างจากแบบที่ 1 มากนัก 
จะเร็วเพียงเล็กน้อย แต่ถ้าเป็น 10g 
 มีการปรับปรุง for loop ให้เป็นแบบ array
run 3 in .... 18 hsecs <<  implicit_cursor_2
run 4 in .... 14 hsecs << explicit_cursor_bulk ดีสุด

ไม่มีความคิดเห็น:

แสดงความคิดเห็น