Mysql
 sql >> Base de données >  >> RDS >> Mysql

Jointure MySQL basée sur l'indexation YEAR () - Ajout de colonne ou colonne générée

Vous pouvez essayer ceci :

FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
                   AND workdone.date <  MAKEDATE(staffcost.costyear+1, 1)

Cela permettra l'utilisation d'un index sur workdone.date pour rechercher des dates entre le premier jour de costyear jusqu'au premier jour de costyear+1 .

En général, ce type de recherche par plage peut exploiter des index où des fonctions (telles que YEAR(datestamp) ) ne peut pas.