一个6000W的表A,一个1800W表B,如何将A表中的一个字段更新为B表中的一个字段的值,按两表中一个字段关联?

Oracle 11gR2,一个6000W的表A,一个1800W表B,现在业务需要,将A表中的一个字段更新为B表中的一个字段的值,按两表中一个字段关联。最效率的方法是怎么搞?

update (select /+parallel(T2,8)/T1.cust_team_id a1, T2.cust_team_id b1

      from serv_t T1, TMP_serv_cust_team T2
     where T1.serv_id = T2.serv_id
       and T1.state in ('F0A','F0X')
       --and mod(T2.serv_id, 10) = 1)

set a1 = b1;

上面这种方式跟游标的方式都试了,都不是太快。上面这种方式把注释放开的话,一个分组要18-20分钟,还是太慢。

参与9

3同行回答

like052like052  数据库管理员 , 学习 待业中
试试forall 、bulk collect,显示全部

试试forall 、bulk collect,

收起
软件开发 · 2017-07-06
浏览3084
江南无烟雨江南无烟雨  研发工程师 , 某券商
nologging那个我也试过,但是是10个分组10个窗口跑的,然后直接僵死了,看那6000W的表好像锁死了。显示全部

nologging那个我也试过,但是是10个分组10个窗口跑的,然后直接僵死了,看那6000W的表好像锁死了。

收起
汽车 · 2017-07-04
浏览3314
y18511664518y18511664518  技术总监 , 长城超云
一次更新10万,然后commit,做一个for,关闭表的log日志显示全部

一次更新10万,然后commit,做一个for,关闭表的log日志

收起
金融其它 · 2017-07-04
浏览3429

提问者

江南无烟雨
研发工程师某券商
擅长领域: 服务器大数据存储

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-07-04
  • 关注会员:3 人
  • 问题浏览:5171
  • 最近回答:2017-07-06
  • X社区推广