oracle 中 對大數據量 字段進行update操做

最近對一個七十多萬條數據的表進行update操做,剛開始直接使用Update語句,以下:sql

update content set pic_bak=pic;

發現對於一兩萬條數據的表很是快,可是對於幾十萬條的表來講就很是慢了,不推薦。所以在網上查閱了一下,採用了declare方法,具體實現以下:oop

declare     聲明變量的關鍵字
v_num number;  定義number類型的變量v_num
begin  
v_num :=11521488;    給聲明的變量賦值(:=),不支持聲明時就賦值
while v_num < 17163145 loop   循環體
update table_name set tmp=content  sql語句
where id>=v_num         id是個人主鍵(sql中使用索引是更快)
and id<v_num+3000;
commit;          每執行3000行一提交,這樣確保不會出現錯誤時回滾
v_num := v_num+3000;  
end loop;
end;

經過這種方法,發現執行七十多萬條數據執行時間爲3分左右,還能夠接受。code

相關文章
相關標籤/搜索