ITPub博客

首页 > 数据库 > Oracle > oracle insert 插入数据

oracle insert 插入数据

Oracle 作者:yehmily 时间:2013-04-28 22:27:00 0 删除 编辑

--创建表create table TEST_STUDENTS(  STUDENT_ID   VARCHAR2(10),  STUDENT_NAME VARCHAR2(100),  AGE          NUMBER(5),  SEX          NUMBER(2),  CLASSID      VARCHAR2(10))tablespace BLOG;-- Add comments to the table comment on table TEST_STUDENTS  is '学生表';-- Add comments to the columns comment on column TEST_STUDENTS.STUDENT_ID  is '学生id';comment on column TEST_STUDENTS.STUDENT_NAME  is '学生姓名';comment on column TEST_STUDENTS.AGE  is '学生年龄';comment on column TEST_STUDENTS.SEX  is '学生性别';comment on column TEST_STUDENTS.CLASSID  is '学生班级';-- Create/Recreate indexes create unique index IDX_STUDENT_ID_TEST on TEST_STUDENTS (STUDENT_ID)  tablespace BLOG;

--删除表drop table TEST_STUDENTS;

--插入数据--=============================================================================================================/**1条并发

**/declare var_count number(20); -- 数据量: 20wvar_sequence number(20); -- 学生序列号begin     var_count := 2000000;   var_sequence := 1;   EXECUTE IMMEDIATE 'alter table TEST_STUDENTS nologging';   for i in var_sequence .. var_count loop

    insert  into TEST_STUDENTS (STUDENT_ID,STUDENT_NAME,AGE,SEX,CLASSID)values(lpad(i,10,'0'),'网一@'||i,'20','1','0001');     if(mod(i,20000)=0)then       commit;     end if;   end loop;   commit;   EXECUTE IMMEDIATE 'alter table TEST_STUDENTS logging';end;/

--删除数据truncate table TEST_STUDENTS;

--查询数据select * from TEST_STUDENTSselect count(*) from TEST_STUDENTS--=============================================================================================================/**10条并发

**/--插入数据declare var_count number(20); -- 数据量: 20wvar_sequence number(20); -- 学生序列号j number(20);begin     var_count := 200000;   -- 数据量计算 var_count * 10   var_sequence := 1;   j := 0;   EXECUTE IMMEDIATE 'alter table TEST_STUDENTS nologging';   for i in var_sequence .. var_count loop

    --insert  into TEST_STUDENTS (STUDENT_ID,STUDENT_NAME,AGE,SEX,CLASSID)values(lpad(i,10,'0'),'网一@'||i,'20','1','0001');     insert into TEST_STUDENTS     (      select lpad(j+1,10,'0'),'网一@'||(j+1),'20','1','0001' from dual      union      select lpad(j+2,10,'0'),'网一@'||(j+2),'20','1','0001' from dual      union      select lpad(j+3,10,'0'),'网一@'||(j+3),'20','1','0001' from dual      union      select lpad(j+4,10,'0'),'网一@'||(j+4),'20','1','0001' from dual      union      select lpad(j+5,10,'0'),'网一@'||(j+5),'20','1','0001' from dual            union      select lpad(j+6,10,'0'),'网一@'||(j+6),'20','1','0001' from dual              union      select lpad(j+7,10,'0'),'网一@'||(j+7),'20','1','0001' from dual              union      select lpad(j+8,10,'0'),'网一@'||(j+8),'20','1','0001' from dual              union      select lpad(j+9,10,'0'),'网一@'||(j+9),'20','1','0001' from dual              union      select lpad(j+10,10,'0'),'网一@'||(j+10),'20','1','0001' from dual                    );      j :=j+10;     if(mod(i,2000)=0)then       commit;     end if;   end loop;   commit;   EXECUTE IMMEDIATE 'alter table TEST_STUDENTS logging';end;/

--=============================================================================================================/**1w条并发

**/

  /**     创建批量表 sk_load   */    create table sk_load(id1 NUMBER(10));

declarevar_bingfa_count number(20);      --批量并发插入大小var_count number(20);             --数据量j number(20);                     --递增序列数k number(20);                     --一次提交数据大小    

begin   /**     变量赋值   */   var_bingfa_count := 10000;   -- 1w条并发   var_count := 200;            -- 数据量计算 var_count * var_bingfa_count  = 200 * 1w = 200 0000   j := 0;                      -- 递增初始化为0   k := 4;                      -- 一次提交数commit = k * var_bingfa_count = 2 * 1w = 20000

  /**     insert 批量表   */   for i in 1 .. var_bingfa_count loop       insert  into sk_load (id1)values(i);       commit;   end loop;

  /**     批量 insert 数据   */   EXECUTE IMMEDIATE 'alter table TEST_STUDENTS nologging';   for i in 1 .. var_count loop     insert  into TEST_STUDENTS select lpad(j+id1,10,'0'),'网一@'||(j+id1),'20','1','0001' from sk_load ;     --j=j+并发数     j :=j+var_bingfa_count;     --提交数 = 2 * 并发数     if(mod(i,k)=0)then       commit;     end if;   end loop;   EXECUTE IMMEDIATE 'alter table TEST_STUDENTS logging';

end;/

  /**     删除批量表 sk_load   */    drop table sk_load;

--=============================================================================================================   /**     结论   */  --花费时间数据量:  20000001条并发   84s 2w提交10条并发:24s 2w提交1w条并发:23s 2w提交

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24199194/viewspace-1109300/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-07-05