Sie könnten Folgendes versuchen:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
Dies ermöglicht die Verwendung eines Indexes für workdone.date
um nach Daten zwischen dem ersten Tag des costyear
zu suchen bis einschließlich des ersten Tages von costyear+1
.
Im Allgemeinen kann diese Art der Bereichssuche Indizes ausnutzen, in denen Funktionen (wie YEAR(datestamp)
) verwendet werden ) nicht.