首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

update语句慢,该如何处理

2013-01-25 
update语句慢UPDATE ONE TSET T.AGE (SELECT T2.AGEFROM TWO T2WHERE T2.IDT.ID) ONE TWO 都是2百万级

update语句慢
UPDATE ONE T
   SET T.AGE =
       (SELECT T2.AGE
          FROM TWO T2
         WHERE T2.ID=T.ID
     ); 

ONE TWO 都是2百万级别的数据,update执行起来速度太慢了。有没有好的方法让速度快速提起来。
[解决办法]
ONE TWO 的id都建了索引了吧
[解决办法]
如果id有索引的话, 可以分段update, 不要全表update,那样肯定是慢的。
[解决办法]
1)索引建了吗?
2)控制事务单位,比如2000条update完一个commit
3)用Oracle专用的update也可以考虑:比如对视图的UPDATE语句


[解决办法]
分段来更新这样可以防止死锁
[解决办法]
循环ONE表,在循环体里面按条件一条条更新,5000次commit一下。
[解决办法]
这个操作经常使用还是临时用一次,要是临时,可以创建一个新表,将需要的内容通过INSERT INTO SELECT 的方式添加进去,

要是是经常使用 建议采用 分批提交,可以考虑加上NOLOGGING
[解决办法]
用merge into试试看

热点排行