Můžete zkusit toto:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
To umožní použití indexu na workdone.date k vyhledání dat mezi prvním dnem costyear až do prvního dne costyear+1, nikoli však včetně .
Obecně platí, že tento druh hledání rozsahu může využívat indexy, kde funkce (jako YEAR(datestamp) ) nemůže.