Можете да опитате това:
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)
) не мога.