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