今天碰到一个问题,更新历史数据时,由于数据库表数据量太大,单行更新速度很慢,要求每五千条执行一次提交进行更新。执行SQL如下:
declare
i_count int;
i_large int;
begin
i_count := 1;
select ceil(count(1) / 5000)
into i_large
from tablename ch;
while i_count <= i_large loop
update tablename a
set a.aa = i_count
where a.aa is null
and rownum <= 5000;
commit;
i_count := i_count + 1;
end loop;
end;
这样写执行效率还可以。