Använd UNIX_TIMESTAMP på konstanten istället för FROM_UNIXTIME i kolumnen:
SELECT * FROM table
WHERE timestamp_field
BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
AND UNIX_TIMESTAMP('2010-04-14 23:59:59')
Detta kan vara snabbare eftersom det tillåter databasen att använda ett index i kolumnen timestamp_field
, om en sådan finns. Det är inte möjligt för databasen att använda indexet när du använder en icke-sargable
fungerar som FROM_UNIXTIME i kolumnen.
Om du inte har ett index på timestamp_field
lägg sedan till en.
När du har gjort detta kan du också försöka förbättra prestandan ytterligare genom att välja de kolumner du behöver istället för att använda SELECT *
.