如下sql執行太慢,該怎麼優化一下呢?
UPDATE AA A
SET COL1 =
(SELECT B.COL2
FROM BB B
WHERE B.BH = A.BH
AND B.YEAR = '2016-2017'
)
WHERE A.YEAR = '2017-2018';
其中,AA表和BB表相同,是一個表格
某草草2017-06-05 11:11:33
沒看懂的是AA 和BB 是一張表還是兩張表,
如果是一張表@prolifes 的方法就可以
如果是兩張表
update AA a, BB b set a.col1 = b. col2 where a.bh = b.bh and a.year='2017-2018' and b.year='2016-2017',
還有,慢和你的數據量大小, 索引都有關係, 我只是給一個一般方法, 效果怎麼樣,得自己試試
ringa_lee2017-06-05 11:11:33
謝謝大家的建議,最後用的是網上的這種,效率稍微快了一點:
Oracle有兩種方式:
內聯視圖更新
update (
select t1.id t1id ,t1.nickname t1nickname,t1.playNum t1playnum,t2.id t2id ,t2.nickname t2nickname,t2.playNum t2playnum
from t1 inner join t2 on (t1.id=t2.id)
)
set t1nickname=t2nickname,t1playnum=t2playnum;