Para esta consulta:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
Sugiro índices em
A(year, id1, id2)
e B(id1, id2, year)
. Você também pode escrever a consulta como:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
A resposta para sua pergunta é "sim" e indexe em
B
é a coisa certa a fazer. Nesta versão, a ordem das colunas no índice não importa muito.