Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Join com base na indexação YEAR () - adição de coluna ou coluna gerada


Você poderia tentar isso:
FROM workdone
LEFT JOIN staffcost ON workdone.date >= MAKEDATE(staffcost.costyear, 1)
                   AND workdone.date <  MAKEDATE(staffcost.costyear+1, 1)

Isso permitirá o uso de um índice em workdone.date para pesquisar datas entre o primeiro dia do costyear até, mas não incluindo o primeiro dia de costyear+1 .

Em geral, esse tipo de pesquisa de intervalo pode explorar índices onde funções (como YEAR(datestamp) ) não pode.