php - UPDATE使用子查詢更新一列執行太慢怎麼辦?
大家讲道理
大家讲道理 2017-06-05 11:09:33
0
4
682

如下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表相同,是一個表格

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆 (4)
漂亮男人

沒太聽明白,
既然是同一步,直接
update 表 set 列1=列2 where 條件
就行了呀

    習慣沉默
    1. 以新的值新建一個表,然後兩個表 merge 操作,最後刪除臨時表;

    2. 建立事務,把所有 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;
          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!