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.