Du kan prova detta:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
Detta tillåter användning av ett index på workdone.date för att söka efter datum mellan den första dagen av costyear fram till men inte inklusive den första dagen av costyear+1 .
I allmänhet kan denna typ av intervallsökning utnyttja index där funktioner (som YEAR(datestamp) ) kan inte.