Mysql
 sql >> Base de données >  >> RDS >> Mysql

Horodatage en tant que champ int, performances des requêtes

Utilisez UNIX_TIMESTAMP sur la constante au lieu de FROM_UNIXTIME sur la colonne :

SELECT * FROM table
WHERE timestamp_field
   BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
       AND UNIX_TIMESTAMP('2010-04-14 23:59:59')

Cela peut être plus rapide car cela permet à la base de données d'utiliser un index sur la colonne timestamp_field , s'il en existe un. Il n'est pas possible pour la base de données d'utiliser l'index lorsque vous utilisez un non-sargable fonction comme FROM_UNIXTIME sur la colonne.

Si vous n'avez pas d'index sur timestamp_field puis ajoutez-en un.

Une fois que vous avez fait cela, vous pouvez également essayer d'améliorer encore les performances en sélectionnant les colonnes dont vous avez besoin au lieu d'utiliser SELECT * .