Je zou dit kunnen proberen:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
Hierdoor kan er een index worden gebruikt op workdone.date
om te zoeken naar datums tussen de eerste dag van het costyear
tot maar niet met inbegrip van de eerste dag van costyear+1
.
Over het algemeen kan dit soort zoeken op bereik gebruikmaken van indexen waarin functies (zoals YEAR(datestamp)
) kan niet.