Use UNIX_TIMESTAMP en la constante en lugar de FROM_UNIXTIME en la columna:
SELECT * FROM table
WHERE timestamp_field
BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
AND UNIX_TIMESTAMP('2010-04-14 23:59:59')
Esto puede ser más rápido porque permite que la base de datos use un índice en la columna timestamp_field
, si existe. No es posible que la base de datos use el índice cuando usa un no sargable
función como FROM_UNIXTIME en la columna.
Si no tiene un índice en timestamp_field
luego agrega uno.
Una vez que haya hecho esto, también puede intentar mejorar aún más el rendimiento seleccionando las columnas que necesita en lugar de usar SELECT *
.