Oracle 逐條和批量插入數(shù)據(jù)方式對(duì)比 |
發(fā)布時(shí)間: 2012/7/20 17:46:26 |
passwd varchar2(16) )tablespace cat_data; 采用一條一條插入的方式 create or replace procedure insert_data_one_by_one(n in number) as currentId number(16) := 0; l_userid varchar2(16); l_username varchar2(32);
sqltext := 'insert into base_users(userid, username, passwd) values(:userid, :username,' || '111111 )';
execute immediate sqltext using l_userid, l_username; 采用批量插入的方式 create or replace procedure insert_data_bulk(n in number) as i int; tmp_userid number; tmp_username number; type useridArray is table of varchar2(16) index by binary_integer; type usernameArray is table of varchar2(32) index by binary_integer; puserid useridArray; pusername usernameArray; begin dbms_output.put_line('begin ...' || to_char(current_timestamp, 'HH24:MI:SSxFF')); tmp_userid := 1; tmp_username := 18600000000; for i in 1 .. n loop puserid(i) := tmp_userid; pusername(i) := tmp_username; tmp_userid := tmp_userid + 1; tmp_username := tmp_username + 1; end loop; forall i in 1 ..n insert into base_users(userid, username, passwd) values(puserid(i), pusername(i), '111111'); commit; dbms_output.put_line('end ...' || to_char(current_timestamp, 'HH24:MI:SSxFF')); endinsert_data_bulk; / 測試1千萬條數(shù)據(jù)的插入 SQL>set serveroutput on SQL>begin insert_data_one_by_one(10000000); end; / begin ...22:14:01.572928000
SQL>truncate table base_users;
insert_data_bulk(10000000); end; / begin ...22:25:31.497810000
本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |