Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Timestamp como campo int, desempenho da consulta


Use UNIX_TIMESTAMP na constante em vez de FROM_UNIXTIME na coluna:
SELECT * FROM table
WHERE timestamp_field
   BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
       AND UNIX_TIMESTAMP('2010-04-14 23:59:59')

Isso pode ser mais rápido porque permite que o banco de dados use um índice na coluna timestamp_field , caso exista. Não é possível para o banco de dados usar o índice quando você usa um não-sargable funcionam como FROM_UNIXTIME na coluna.

Se você não tiver um índice em timestamp_field em seguida, adicione um.

Depois de fazer isso, você também pode tentar melhorar ainda mais o desempenho selecionando as colunas necessárias em vez de usar SELECT * .