update字段时,执行效率慢可以换成下边这种方式:
解决办法:
用merge into tableA using (括号里面是你需要的字段,来自于其它表的数据 比如 tableB) on(tableA 跟tableB 的关联条件)
when matched then update set tableA.id=tableB.id ;
这是句式,下边用案列来证明及 这个句式的具体使用方法。
首先,我随意取了一组需要的数,放入了临时表EXP_phone中
然后写了一组update语句,代码粘贴不了,我就直接甩图了,各位哥哥姐姐凑合一下吧。么么么么么哒。
20000000多万的耗费,时间很久,我没有执行看到底有多久,等了好几分钟没有执行完,感觉我是等不了这么长时间的,
而且写在存过里面,时间太久效率太低也是不行的。所以我就想了其他的办法。同事说可以用merge into ,于是我试了一下。
直接甩代码及耗费截图
从这张图上可以看出来,耗费变成了4000+ 执行效率直接就变成了不到2S就执行完了,而且我在临时表建了个索引,也走了索引,merge into 明显提升了update的效率,
update phone时是全表检索一遍,一组一组的set,而merge into 是根据on 后边的条件将全部符合的数据提取出来,一块set 进需要update的表里,所以效率会快一点。
大概就这个样子了,若有不对之处,希望能得到大佬的指点。