Dla tego zapytania:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
Sugerowałbym indeksy na A(year, id1, id2) i B(id1, id2, year) .
Możesz również napisać zapytanie jako:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
Odpowiedź na Twoje pytanie brzmi „tak” i indeksuj na B jest właściwą rzeczą do zrobienia. W tej wersji kolejność kolumn w indeksie tak naprawdę nie ma znaczenia.