最近项目进入白热化阶段,在工作忙碌之余,突然收到一个同事的请求,说表里面只有20多万行的数据,使用update语句,已经跑了30分钟,为什么还没有出结果。我就马上把他的语句拿来看:
查看一下执行计划:
执行计划是old version,重新建一下plan_table表:
存在资源繁忙,我把刚才执行的语句关闭掉就OK,现在从新看一下执行计划:
现在可以啦,看一下存在这么多filter,我跟我拿同事说,你这个语句执行几个小时都不可能跑完。
然后我查看一下语句业务逻辑,用merge into帮他改写了一下。
再次查看一下执行计划:
这次走了hash_join,我跟同事说用这个sql,只用了10多秒就出来啦。