За тази заявка:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
Бих предложил индекси на A(year, id1, id2)
и B(id1, id2, year)
.
Можете също да напишете заявката като:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
Отговорът на вашия въпрос е "да" и индекс на B
е правилното нещо. В тази версия редът на колоните в индекса няма особено значение.