ORACLE 兩表更新 update

來源:互聯網
上載者:User

oralce 的兩個表關聯更新 寫法和另類 與MS SQL很不一樣

有時候更新大錶速度特慢 5-10個小時都沒結束

 

UPDATE T_BASE_SUCC_PROUSER X SET X.F_EXPECTENDDATE = ( SELECT
E.F_ENDTIME FROM T_GATHER_EXPECT E WHERE X.F_LOTID=E.F_LOTTERYID AND
X.F_EXPECT=E.F_EXPECT )
T_BASE_SUCC_PROUSER 昨天更新了14個小時都沒解釋
今天加個索引也跑那麼慢
首次載入時間  2009-9-8 10:38:5 到現在15:58分近五個小時了
而且EM上看IO量維持很低
表大小7205M 行7758,5575
執行計畫
操作                對象            物件類型 順序    行    大小 (KB)    成本  時間 (秒) CPU 成本    I/O 成本
TABLE ACCESS FULL T_BASE_SUCC_PROUSER TABLE 1    77585575 1,439,576.099 169053  2029      36788100922  164759
TABLE ACCESS FULL T_GATHER_EXPECT    TABLE 2    1          0.021        139        2        25736801    136

想這樣更新大表 而且IO利用率那麼低 各位如何寫這樣更新語句啊

 

 

1

UPDATE T_BASE_SUCC_PROUSER X SET X.F_EXPECTENDDATE = ( SELECT
E.F_ENDTIME FROM T_GATHER_EXPECT E WHERE X.F_LOTID=E.F_LOTTERYID AND
X.F_EXPECT=E.F_EXPECT )
where exists(select 1 from T_GATHER_EXPECT E WHERE X.F_LOTID=E.F_LOTTERYID AND X.F_EXPECT=E.F_EXPECT)

 

後面一定要加上where exists(select 1 from T_GATHER_EXPECT E WHERE
X.F_LOTID=E.F_LOTTERYID AND X.F_EXPECT=E.F_EXPECT)
,不能的話所以的資料行都將修改,當然每行只是修改一次。

 

2

 建議用Update視圖的方式來做。
update (select x.F_EXPECTENDDATE,E.F_ENDTIME
          from T_BASE_SUCC_PROUSER X left join T_GATHER_EXPECT E on X.F_LOTID=E.F_LOTTERYID AND X.F_EXPECT=E.F_EXPECT
)
set F_EXPECTENDDATE=F_ENDTIME

 

兩表需要外鍵關鏈

 

3 暫存資料表法

create table a as

select  x.*,e.f_endtime

from x

inner join  e  on  x.f_lotid=e.f_lotid and e.id=x.id

 

truncate table  x

insert into x select * from a;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.