Хочется узнать стандартную вещь только в толковом, а не сухом и размытом как в документации объяснении.
Допустим есть такие таблицы:
t1 = (f11,f12,...,f1n)
t1 = (f21,f22,...,f2m)
t1 = (f31,f32,...,f3k)
Допустим есть такие простые(каждый на одно поле) индексы по соответствующим полям в этих таблицах:
в t1 есть ind_f11, ind_f12
в t2 есть ind_f21, ind_f22
в t3 есть ind_f31, ind_f32
Допустим есть такой запрос:
select t1.f11,t1.f12, t2.f21,t2.f22, t3.31,t3.32
from t1, t2, t3
where t2.f22 = t1.f11
and t3.f32 = t2.f21
Если мы хотим явно указать оптимизатору по какому индексу строить запрос, то пишем хинт:
select /*+ index (t1 ind_f11)*/
t1.f11,t1.f12, t2.f21,t2.f22, t3.31,t3.32
from t1, t2, t3
where t2.f22 = t1.f11
and t3.f32 = t2.f21
Как указать компилятору, что надо идти сразу по нескольким индексам из разных таблиц?
Если написать так:
select /*+ index (t1 ind_f11, t2 ind_f22, t3 ind_f32)*/
t1.f11,t1.f12, t2.f21,t2.f22, t3.31,t3.32
from t1, t2, t3
where t2.f22 = t1.f11
and t3.f32 = t2.f21
то оптимизатор не поймёт.