以scott用户为例
从执行计划(plan)来看,比起普通的update语句,用merge方式效率高
--将dept表的10号,20号部门名字更新到emp表去,30,40号部门的保持不变
alter table emp add dname varchar2(50) default 'noname';
merge into emp
using (select dname,deptno from dept where dept.dname in ('ACCOUNTING','RESEARCH')) dept
on (dept.deptno = emp.deptno)
when matched then
update set emp.dname = dept.dname
接下来看看执行计划
explain plan for
merge into emp
using (select dname,deptno from dept where dept.dname in ('ACCOUNTING','RESEARCH')) dept
on (dept.deptno = emp.deptno)
when matched then
update set emp.dname = dept.dname;
select * from table(dbms_xplan.display());
可以看到,对dept表的访问只有一次,而普通update语句访问了两次