日期:2014-05-17  浏览次数:21086 次

关于update性能
我有一张表t,有20W条左右数据,现在要清空某列
update t set a=null;
这句话居然要运行3分多钟,请问这样正常吗?哪些因素会影响update语句呢,如果表里数据达到千万级怎么办,岂不是要几个小时啦。。。
------最佳解决方案--------------------
其实需求是,列只是要清空,可以先删除列,再添加列,效率高些
alter table 表名 drop column 列名;
alter table 表 add (列 varchar2(10));

------其他解决方案--------------------
分批UPDATE,20W数据建议分10次更新,每更新2W条提交一次。
------其他解决方案--------------------
正常,3分钟很长吗?如果数据量很大,最好分批更新
------其他解决方案--------------------
引用:
其实需求是,列只是要清空,可以先删除列,再添加列,效率高些
alter table 表名 drop column 列名;
alter table 表 add (列 varchar2(10));

其实没什么需求,就是觉得update效率太低了,如果把一张表里的数据update到另一张表中,当两张表的数据量都在20W以上时,几乎就出不来结果了
所以想了解下update的性能跟哪些表的因素有关,如果两张大表联合update,要更新的数据量较大时有什么好办法没