Usa UNIX_TIMESTAMP sulla costante invece di FROM_UNIXTIME sulla colonna:
SELECT * FROM table
WHERE timestamp_field
BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
AND UNIX_TIMESTAMP('2010-04-14 23:59:59')
Questo può essere più veloce perché consente al database di utilizzare un indice nella colonna timestamp_field
, se ne esiste uno. Non è possibile che il database utilizzi l'indice quando si utilizza un non sargable
funzione come FROM_UNIXTIME sulla colonna.
Se non hai un indice su timestamp_field
quindi aggiungine uno.
Una volta fatto questo, puoi anche provare a migliorare ulteriormente le prestazioni selezionando le colonne che ti servono invece di usare SELECT *
.