大数据量更新问题 有个表大概有百万条数据,有个处理,要选出其中某些数据,根据某个字段(A)去另外一个表查出来它对应的数据(B),然后把A更新成B。现在的处理方法是用游标,处理完一条接着commit,非常的慢。请问有没有什么好的解决方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 表关联更新呀,肯定比你用游标更新要快的多update table1 t1 set t1.a = (select max(b) from table2 t2 where t1.a = t2.a) where exists(select 1 from table2 t2 where t1.a = t2.a); 可以使用这样的方式更新也可以用更新view的方式更新建议看看这个文章http://blog.csdn.net/inthirties/archive/2009/08/28/4493085.aspx 这么大的数据流,绝对不能用游标来处理,用批量update语句来处理吧!比如 update tb1 set tb1.A=(select tb2.B tb2 where tb2.A=tb1.A and rownum=1) where ........--过滤tb1,选择你需要的数据进行update。 频繁的commit,性能肯定不高,可设个变量,更新到几万条记录时commit一次 不能频繁的commit;你可以考虑,当又了10000条dml语句之后,再commit一次。 删除和更新指定行,如limit(10,20) oracle不能启动实例,错误1053,监听正常,救命啦!! Linux下安装oracle的问题,在线急等,高手帮忙 请教:NAMESCTL的作用是什么? 急!如何用sql语句得到指定行数据 关于查找最近的一条记录的sql语句 commit一问,, 如何远程自动备份数据库啊?请高手指点 如何在oracle中实现取前10条纪录?(在线等) oracle 数据 上次到 db2数据库中 请进来讲讲学Oracle的心得 求一oracle的sql语句
update table1 t1
set t1.a = (select max(b) from table2 t2 where t1.a = t2.a)
where exists(select 1 from table2 t2 where t1.a = t2.a);
可以使用这样的方式更新也可以用更新view的方式更新建议看看这个文章
http://blog.csdn.net/inthirties/archive/2009/08/28/4493085.aspx
这么大的数据流,绝对不能用游标来处理,用批量update语句来处理吧!比如 update tb1
set tb1.A=(select tb2.B tb2 where tb2.A=tb1.A and rownum=1)
where ........--过滤tb1,选择你需要的数据进行update。
你可以考虑,当又了10000条dml语句之后,再commit一次。