Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 逐条和批量插入数据方式对比

创建测试表create table base_users(  userid         varchar2(16),  username  varchar2(32),    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 varchar2(256);
begin
    dbms_output.put_line("begin ..." || to_char(current_timestamp, "HH24:MI:SSxFF"));    sqltext := "insert into base_users(userid, username, passwd) values(:userid, :username," || "111111 )";
    loop
        currentId:=currentId + 1;
        l_userid:= to_char(currentId);
        l_username:= to_char(18600000000 + currentId);        execute immediate sqltext using l_userid, l_username;
        exit when currentId >= n;
    end loop;
    commit;
    dbms_output.put_line("end commit ..." || to_char(current_timestamp, "HH24:MI:SSxFF"));
end insert_data_one_by_one;
/采用批量插入的方式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千万条数据的插入SQL>set serveroutput onSQL>begininsert_data_one_by_one(10000000);end;/begin ...22:14:01.572928000
end commit ...22:20:43.911104000  SQL>truncate table base_users; 
SQL>begininsert_data_bulk(10000000);end;/begin ...22:25:31.497810000
end ...22:27:23.801515000更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 快速load数据的方法--SQL*Loader一个简单的Oracle存储过程测试数据插入效率相关资讯      Oracle数据库基础教程 
  • 在Oracle数据库中插入含有&符号的  (03/06/2013 09:20:14)
  • Oracle 执行计划更改导致数据加工  (02/13/2013 14:45:04)
  • 判断Oracle Sequence是否存在  (02/13/2013 14:32:26)
  • Oracle数据库中无法对数据表进行  (02/26/2013 14:24:58)
  • Oracle 在同一台主机上建立用户管  (02/13/2013 14:40:58)
  • Oracle em 无法启动,报not found错  (02/13/2013 14:29:48)
本文评论 查看全部评论 (0)
表情: 姓名: 字数