sql >> Base de Datos >  >> RDS >> Mysql

Marca de tiempo como campo int, rendimiento de consulta

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 * .