sql >> Database >  >> RDS >> Mysql

MySQL Join op basis van YEAR () indexering - Kolom toevoegen of gegenereerde kolom

Je zou dit kunnen proberen:

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

Hierdoor kan er een index worden gebruikt op workdone.date om te zoeken naar datums tussen de eerste dag van het costyear tot maar niet met inbegrip van de eerste dag van costyear+1 .

Over het algemeen kan dit soort zoeken op bereik gebruikmaken van indexen waarin functies (zoals YEAR(datestamp) ) kan niet.



  1. Fatale fout:oproep naar ongedefinieerde functie mysqli_result()

  2. Grails 3 - Gradle afhankelijkheden Mysql Connector

  3. Verleen machtigingen aan de gebruiker voor alle nieuwe tabellen die zijn gemaakt in postgresql

  4. SQL Server op Linux