Bạn có thể thử điều này:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
AND workdone.date < MAKEDATE(staffcost.costyear+1, 1)
Điều này sẽ cho phép sử dụng chỉ mục trên workdone.date
để tìm kiếm các ngày giữa ngày đầu tiên của costyear
cho đến nhưng không bao gồm ngày đầu tiên của costyear+1
.
Nói chung, loại tìm kiếm theo phạm vi này có thể khai thác các chỉ mục trong đó các hàm (chẳng hạn như YEAR(datestamp)
) không được.