update st_zd1 a set sz_jf= (select sz_jf from t_zd b where a.djh=b.bsm)
其中djh与bsm都已经添加了索引,st_zd1表中有30万记录,t_zd中有50万记录,更新速度很慢。
查看执行计划都是table access full,请问这怎么优化
upadate?语句优化
------解决方案--------------------
你更新这个不带where条件??????
考虑下用merge吧
------解决方案--------------------
update st_zd1 a set sz_jf= (select sz_jf from t_zd b where a.djh=b.bsm)
where exists(select sz_jf from t_zd b where a.djh=b.bsm)
这样会快点
------解决方案--------------------
+1。
楼主那个没有指明筛选 所以会两个全表扫描更新。
------解决方案--------------------
update(select a.name,b.name from a,b where a.id=b.id) set a.name=b.name;
这样更快,两个索引都能用到,3楼的只能用到一个索引