日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表

發(fā)布時間:2025/3/15 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【問題】現(xiàn)在有兩個千萬級別的結(jié)構(gòu)相同數(shù)據(jù)不同數(shù)據(jù)表T_SMS_PHONENO(目的表),T_SMS_PHONENO2(源表),根據(jù)源表數(shù)據(jù)更新目的表的數(shù)據(jù)。

【分析】根據(jù)經(jīng)驗(yàn),更新方法一般有以下幾種:

1、直接update。

update T_SMS_PHONENO?T?Set??? T.NAME=(select NAME from T_SMS_PHONENO2 where PHONENO=T.PHONENO)

2、采用分條更新。根據(jù)記錄ID逐條更新。

open cur is select phoneno,name from T_SMS_PHONENO;

loop

fetch cur in v_pn,v_name;

update T_SMS_PHONENO T?set T.NAME=v_name where v_pn=T.phoneno;

exit when cur% notfound;

end loop

3、采用分批次更新。將數(shù)據(jù)按表分區(qū)字段或其他字段依次進(jìn)行分批次更新。

open cur is select?region from T_SMS_PHONENO group by region;

loop

fetch cur in v_region;

update T_SMS_PHONENO T?set T.NAME=(select name from T_SMS_PHONENO2 where phoneno=T.Phoneno) where T.region=v_region;

exit when cur% notfound;

end loop

4、虛擬一張表,唯一關(guān)聯(lián)后進(jìn)行更新。

update (select? T.name,T2.name name2?from T_SMS_PHONENO T,T_SMS_PHONENO2 T2 where T.phoneno=T2.phoneno) set name=name2;

5、Create 一張新表后進(jìn)行更新。

create table TEMP_SMS_PHONENO as select * from T_SMS_PHONENO T,T_SMS_PHONENO2 T2?where T.phoneno=T2.phoneno;

生成新表,然后重命名表為T_SMS_PHONENO

【結(jié)論】

1、對于大表的更新如果采用直接update語句,則會直接產(chǎn)生大量回滾,并且時間很長,出現(xiàn)假死現(xiàn)象。

2、1小時。

3、30分鐘。

4、2分鐘。

5、30秒,因?yàn)椴划a(chǎn)生redo,undo動作,insert語句會很快。

如果存在唯一性關(guān)聯(lián)字段的話,則采用第四種方法更新,是很快的,如果不存在唯一關(guān)聯(lián)字段則需要分批次更新,或者create 個新表。

總結(jié)

以上是生活随笔為你收集整理的oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。