1

我有这个查询,它使用数据链接更新 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 进行全表扫描?

4

0 回答 0