För den här frågan:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;
Jag skulle föreslå index på A(year, id1, id2)
och B(id1, id2, year)
.
Du kan också skriva frågan som:
Select *
from A join
B
on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;
Svaret på din fråga är "ja" och indexera på B
är det rätta att göra. I den här versionen spelar ordningen på kolumnerna i index ingen roll.