求快速在一空表插入一亿条数据

billlyh 2015-11-19 08:48:10
分别用了没有绑定变量的INSERT语句、有绑定变量的INSERT语句,两种方法都用了两小时以上还没跑完,有朋友说用oracle数据泵,看了网上资料,这是个导入导出功能呀,我是在一空表插入一亿条数据,觉得不适合呀
求高手指点
用绑定变量
declare
v_sql varchar2(4000);
begin
for i in 1 .. 1234567890 loop
v_sql := 'insert into use_bind_lyh(id) values(:x)';
execute immediate v_sql
using i;
commit;
end loop;
end;

不用绑定变量
declare
v_sql varchar2(4000);
begin
for i in 1 .. 1234567890 loop
v_sql := 'insert into use_bind_lyh2(id) values (' || i || ')';
execute immediate v_sql;
commit;
end loop;
end ;
...全文
1361 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-04-21
  • 打赏
  • 举报
回复

-- 我这里灌了 1亿条记录,你大概参考一下时间;
SQL> create table x(x int) ;
Table created
Executed in 0.069 seconds
SQL> begin
  2      insert into x select rownum from dual connect by rownum <= 10000 ;
  3      for x in 1..9999 loop
  4          insert into /*+ append */x select * from x where rownum <= 10000;
  5          commit ;
  6      end loop ;
  7  end ;
  8  /
PL/SQL procedure successfully completed
Executed in 74.242 seconds
SQL> select count(*) from x ;
  COUNT(*)
----------
 100000000
Executed in 7.061 seconds
SQL> drop table x purge ;
Table dropped
Executed in 0.174 seconds

SQL> 
bo871747022 2016-04-18
  • 打赏
  • 举报
回复
提交时批量提交,一般1000到4000可以了,还有就是索引问题,可以在数据插入后再建立索引啊。
zkzhong 2016-04-17
  • 打赏
  • 举报
回复
一亿条在插入时不要每一条都commit,用批量插入,删除所有的索引,数据插入完成在建立索引。
东方淄墨 2016-04-13
  • 打赏
  • 举报
回复
先把索引删掉,然后再插入数据。插入时批量提交,不要插入一条提交一次。全部插入后重建索引
小灰狼W 2015-11-20
  • 打赏
  • 举报
回复
这个试验是要比较是否绑定变量带来的性能差异,但实际上这个差异较小,因此才把执行次数增加来放大,且要降低其他的干扰因素带来的影响 因此,这里要把表里的索引删掉 且确定数据库中cursor_sharing参数此时的值是exact 执行次数你这里是10多亿,太多了,先采用100万,差异太小,再增加量级
Miracle_lucy 2015-11-20
  • 打赏
  • 举报
回复
也来学习。。
zbdzjx 2015-11-20
  • 打赏
  • 举报
回复
试一下,改“commit;”为:
if mod(i,1000)=0 then
  commit;
end if;
也就是批量提交,不要一条一条的提交。 其中的1000可以测试看看是多少比较快,我插入了123456条记录,感觉100、1000、10000差别不大。
BenChiM888 2015-11-20
  • 打赏
  • 举报
回复
1、提交次数过贫 2、删除索引,插入完毕后重建 3、试试这种方式 inset into t values(1); for i in 0 ..33 loop insert into t select 序列.next from t; end loop;
billlyh 2015-11-19
  • 打赏
  • 举报
回复
注:这两个表的ID都建有索引的

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧