oracle 修改大表的数据

来源:百度知道 编辑:UC知道 时间:2024/06/27 17:56:09
要修改大表的a字段的数据,将所有a=1的,更改成a=2,如何实现比较好?
(表很大,用update不可以!)
下面两句的区别,在执行质量/速度上有多少区别?
(1)update abc set a=2 where a=1;
(2)begin
for cur in(select * from def) loop
update abc set a=2 where id=cur.id;
end loop;
end;
/
(假设abc为大表,所要更改的a=1的数量也很大)

找出个有代表性的字段,建立索引
分批update,否则回滚太大,系统承受不了
修改字段,好像除了update也没别的了吧

没什么区别,都是要把表遍历一遍

看修改的量了,如果a=1的占的比例大,建索引也是没用的。强制的话更慢

你不用update还想怎么办?我是没办法。
也可以exp出来到另一个库里改了再imp进去。

你建个job嘛,晚上没人用的时候再跑。