现在有个表 表中有两个字段 字段A 字段B  字段B是空值  实现蒋字段A表数据更新到字段B表里来 更新时间不能太久 已近试过update(select a,b from table)set b=a了 这样更新速度太慢了 1千万条的数据 几天都更新不玩  有什么好的解决方法 分批更新也可以 知道的回个贴 谢谢各位大神 

解决方案 »

  1.   

    Oracle 利用 rowid 提升 update 性能
    http://blog.csdn.net/tianlesoftware/article/details/6576156这个例子我测试的是300w,4分钟。 另外bulk 也可以尝试。Oracle 大规模 delete,update 操作 注意事项
    http://blog.csdn.net/tianlesoftware/article/details/6567458Oracle bulk 示例
    http://blog.csdn.net/tianlesoftware/article/details/6599003
      

  2.   

     假如表test中有a,b两个字段,而且数据有很多
     可以这样更新,很快...  create table test2 
      (
       a ,
       b 
      )
       as select t.a,t.a  from test t; 
     
     drop table test;
     alter table test2 rename to test;
      

  3.   

    set autocommit 500000;
    设置每隔50w条记录提交此次试试
      

  4.   

    update table set b=a ;
      

  5.   

    实现蒋字段A表数据更新到字段B表里来恕我语文老师死的早,你是不是就一个表,想把所有B的值设置和A一样?如果记录太多的话,用2楼三楼的方式删除再加会比较好
      

  6.   

    这种方法比更新要快的多,推荐不过需要注意两点
    1. 不要直接 drop test 表,可先 rename test to test2;
    2. rename test1 to test;以后,需要检查一下你的应用环境是否有失效对象,失效对象需要重编译一下