Можете да опитате това:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
Това ще позволи използването на индекс на workdone.date за търсене на дати между първия ден на costyear до, но не включително първия ден от costyear+1 .
Като цяло, този вид търсене на диапазон може да използва индекси, където функции (като YEAR(datestamp) ) не мога.