Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Join basato sull'indicizzazione YEAR () - Aggiunta di colonne o Colonna generata

Potresti provare questo:

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

Ciò consentirà l'utilizzo di un indice su workdone.date per cercare le date comprese tra il primo giorno del costyear fino al primo giorno di costyear+1, escluso .

In generale, questo tipo di ricerca per intervalli può sfruttare indici in cui funzioni (come YEAR(datestamp) ) non può.