Могу ли я использовать индексы из нескольких таблиц в Oracle SQL? - PullRequest
0 голосов
/ 04 июля 2018

Могу ли я использовать это так?

SELECT /*+ index (T1 index1_name, T2 index2_name)*/
FROM T1, T2
WHERE T1.ID = T2.ID

Это синтаксис corrent? Все примеры, которые я нашел, показывают использование индексов из одной таблицы, даже когда используется несколько таблиц.

1 Ответ

0 голосов
/ 04 июля 2018

Можно ли использовать индексы из нескольких таблиц в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...