Anda dapat mencoba ini:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
Ini akan memungkinkan penggunaan indeks pada workdone.date
untuk mencari tanggal antara hari pertama costyear
hingga tetapi tidak termasuk hari pertama costyear+1
.
Secara umum, jenis pencarian rentang ini dapat mengeksploitasi indeks di mana fungsi (seperti YEAR(datestamp)
) tidak bisa.