84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
如下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表相同,是一個表格
光阴似箭催人老,日月如移越少年。
沒太聽明白,既然是同一步,直接update 表 set 列1=列2 where 條件就行了呀
以新的值新建一個表,然後兩個表 merge 操作,最後刪除臨時表;
建立事務,把所有 update 寫進去,最後 commit;
沒看懂的是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',還有,慢和你的數據量大小, 索引都有關係, 我只是給一個一般方法, 效果怎麼樣,得自己試試
謝謝大家的建議,最後用的是網上的這種,效率稍微快了一點: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;
沒太聽明白,
既然是同一步,直接
update 表 set 列1=列2 where 條件
就行了呀
以新的值新建一個表,然後兩個表 merge 操作,最後刪除臨時表;
建立事務,把所有 update 寫進去,最後 commit;
沒看懂的是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',
還有,慢和你的數據量大小, 索引都有關係, 我只是給一個一般方法, 效果怎麼樣,得自己試試
謝謝大家的建議,最後用的是網上的這種,效率稍微快了一點:
Oracle有兩種方式:
內聯視圖更新