sql >> Base de Datos >  >> RDS >> Mysql

MySQL Join basado en la indexación de AÑO () - Agregar columna o columna generada

Podrías probar esto:

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

Esto permitirá el uso de un índice en workdone.date para buscar fechas entre el primer día del costyear hasta el primer día de costyear+1, pero sin incluirlo .

En general, este tipo de búsqueda de rango puede explotar índices donde las funciones (como YEAR(datestamp) ) no puede.