最近對一個七十多萬條數據的表進行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