Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Join basierend auf YEAR ()-Indizierung – Spalte hinzufügen oder generierte Spalte

Sie könnten Folgendes versuchen:

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

Dies ermöglicht die Verwendung eines Indexes für workdone.date um nach Daten zwischen dem ersten Tag des costyear zu suchen bis einschließlich des ersten Tages von costyear+1 .

Im Allgemeinen kann diese Art der Bereichssuche Indizes ausnutzen, in denen Funktionen (wie YEAR(datestamp)) verwendet werden ) nicht.