php - UPDATE使用子查询更新一列执行太慢怎么办?
大家讲道理
大家讲道理 2017-06-05 11:09:33
[PHP讨论组]

如下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',
还有,慢和你的数据量大小, 索引都有关系, 我只是给一个一般方法, 效果怎么样,得自己试试

ringa_lee

谢谢大家的建议,最后用的是网上的这种,效率稍微快了一点:
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;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号