我有这个查询,它使用数据链接更新 Oracle 模式中的值,以从另一个模式中存在的表中检索值。
UPDATE SCHEMA1.TABLE1 t1 SET NAME =
(SELECT t2.NAME FROM SCHEMA2.TABLE2@DATA_LYNK_TEST t2 WHERE t1.ID= t2.ID)
TABLE1.ID 是主键。TABLE2.ID 是主键。
我的问题:这个查询在通过数据链接时会使用 TABLE2.ID 上的索引吗?如果是这样,是否需要启用数据链路上的任何内容才能使索引可用?
我得到的解释计划对我没有多大帮助。
---------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
---------------------------------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | | | 147M(100)| | | |
| 1 | UPDATE | TABLE1 | | | | | | |
| 2 | TABLE ACCESS FULL| TABLE1 | 36M| 1648M| 224K (1)| 00:00:09 | | |
| 3 | REMOTE | TABLE2 | 1 | 106 | 1 (0)| 00:00:01 | DATA_~ | R->S |
---------------------------------------------------------------------------------------------------------------
我期待对 TABLE1 进行全表扫描,因为我正在更新整个表。但是我如何解释解释计划的第 3 行?对于 TABLE1 中更新的每一行,是否对 TABLE2 进行全表扫描?