Voor deze vraag:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
Ik zou indexen aanraden op A(year, id1, id2)
en B(id1, id2, year)
.
U kunt de zoekopdracht ook schrijven als:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
Het antwoord op je vraag is "ja" en indexeer op B
is het juiste om te doen. In deze versie doet de volgorde van de kolommen in de index er niet echt toe.