如下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表相同,是一个表
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
没太听明白,
既然是同一个步,直接
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有两种方式:
内联视图更新