Можно ли использовать индексы из нескольких таблиц в Oracle SQL?
Конечно, посмотрите на приведенный ниже пример.
drop table t1
/
create table t1
(id number(8) null,
p_name varchar2(100) null)
/
drop table t2
/
create table t2
(id number(8) null,
c_name varchar2(100) null)
/
create index idx_t1_id on t1 (ID)
/
create index idx_t2_id on t2 (ID)
/
insert into t1 (id)
select rownum from dual
connect by rownum<=1000000
/
insert into t2 (id)
select rownum from dual
connect by rownum<=1000000
/
хорошо, теперь давайте запустим запрос с индексом силы и покажем, что это план запроса.
(в качестве последнего варианта используется индекс силы подсказки, поскольку в оптимизаторе oracle используются методы расчета стоимости (CBO, RBO) для определения наиболее эффективного способа получения результата запроса).
select /*+ index ( a idx_t1_id) index ( b idx_t2_id)*/ * from t1 a
inner join t2 b on a.id = b.id
![enter image description here](https://i.stack.imgur.com/eE72N.png)