类似NL的update更新

update b set b.object_name=(select a.object_name from a where a.object_id=b.object_id);



create table a as (select * from (select * from dba_objects order by object_id) where rownum<100)





create table b as (select * from (select * from dba_objects order by object_id) where rownum<100)





SQL> update b set object_name=object_name||'xxx';



99 rows updated.





SQL> select count(*) from a;



  COUNT(*)

----------

	99



子查询会被扫描99次



SQL> alter session set statistics_level=all;



Session altered.



SQL> update b set b.object_name=(select a.object_name from a where a.object_id=b.object_id);



99 rows updated.



SQL> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));



PLAN_TABLE_OUTPUT

------------------------------------------------------------------------------------------------------------------------------------------------------------



--------------------------------------------

SQL_ID	9n2d868fqhcq4, child number 0

-------------------------------------

update b set b.object_name=(select a.object_name from a where

a.object_id=b.object_id)



Plan hash value: 1917715316



-------------------------------------------------------------------------------------

| Id  | Operation	   | Name | Starts | E-Rows | A-Rows |	 A-Time   | Buffers |

-------------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT   |	  |	 1 |	    |	   0 |00:00:00.01 |	504 |

|   1 |  UPDATE 	   | B	  |	 1 |	    |	   0 |00:00:00.01 |	504 |

|   2 |   TABLE ACCESS FULL| B	  |	 1 |	 99 |	  99 |00:00:00.01 |	  4 |

|*  3 |   TABLE ACCESS FULL| A	  |	99 |	  1 |	  99 |00:00:00.01 |	396 |

-------------------------------------------------------------------------------------



Predicate Information (identified by operation id):

---------------------------------------------------



   3 - filter("A"."OBJECT_ID"=:B1)



Note

-----

   - dynamic sampling used for this statement (level=2)





25 rows selected.





可以看到A表被扫描了99次,类似于NL。


你可能感兴趣的:(update)