Mysql
 sql >> Database >  >> RDS >> Mysql

Timestamp come campo int, prestazioni della query

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