Oracle
 sql >> Database >  >> RDS >> Oracle

Indice su join e dove

Per questa domanda:

Select *
from A join
     B
     on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;

Suggerirei indici su A(year, id1, id2) e B(id1, id2, year) .

Potresti anche scrivere la query come:

Select *
from A join
     B
     on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;

La risposta alla tua domanda è "sì" e indicizza su B è la cosa giusta da fare. In questa versione, l'ordine delle colonne nell'indice non ha molta importanza.