0
我注意到索引仍在使用,即使它们没有当前模式的同义词。 我跑到下面的测试:根据不同的模式HRCUST
Do索引需要使用同义词
create table hrcust.test_idx_tbl
(
id number
, data1 varchar2(100)
, data2 varchar2(100)
);
创建的代名词自定义表
create synonym apps.test_idx_tbl for hrcust.test_idx_tbl;
其它模式下创建一个索引
SHOW USER;
----------------
USER is "APPS"
创建的表:
create index hrcust.test_idx_idx on hrcust.test_idx_tbl(id);
个
插入一些虚拟值:
begin
for i in 1..10000 loop
insert into hrcust.test_idx_tbl
(
id
, data1
, data2
)
values
(
i
, 'data'||i
, 'data'||i
);
end loop;
end;
检查解释计划,但它仍然使用了索引,即使我明确地使用了APPS
同义词
select *
from apps.test_idx_tbl
where id = 1;
Plan hash value: 3233418199
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 117 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| TEST_IDX_TBL | 1 | 117 | 1 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | TEST_IDX_IDX | 1 | | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ID"=1)
那么,这是否意味着它不需要在创建同义词指标? 如果我们将索引放在同义词上,会有负面影响吗?
您可能直接在访问提示中引用索引;但仍然不需要同义词。 – Ben