Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeitstempel als Int-Feld, Abfrageleistung

Verwenden Sie UNIX_TIMESTAMP auf der Konstante anstelle von FROM_UNIXTIME auf der Spalte:

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

Dies kann schneller sein, da die Datenbank einen Index für die Spalte timestamp_field verwenden kann , falls vorhanden. Es ist der Datenbank nicht möglich, den Index zu verwenden, wenn Sie ein Nicht-Sargable verwenden Funktion wie FROM_UNIXTIME in der Spalte.

Wenn Sie keinen Index für timestamp_field haben dann füge eins hinzu.

Sobald Sie dies getan haben, können Sie auch versuchen, die Leistung weiter zu verbessern, indem Sie die benötigten Spalten auswählen, anstatt SELECT * zu verwenden .