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

Tidsstempel som int-felt, forespørgselsydeevne

Brug UNIX_TIMESTAMP på konstanten i stedet for FROM_UNIXTIME på kolonnen:

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

Dette kan være hurtigere, fordi det tillader databasen at bruge et indeks i kolonnen timestamp_field , hvis der findes en. Det er ikke muligt for databasen at bruge indekset, når du bruger en ikke-sargable fungerer som FROM_UNIXTIME på kolonnen.

Hvis du ikke har et indeks på timestamp_field derefter tilføje en.

Når du har gjort dette, kan du også prøve at forbedre ydeevnen yderligere ved at vælge de kolonner, du har brug for i stedet for at bruge SELECT * .



  1. Optimering af MySQL-indsæt til at håndtere en datastrøm

  2. Jeg vil hente data fra forskellige tabelnavne ved hjælp af postgresql-funktionen

  3. Indvirkning på applikation ved migrering fra sql server 2005 til 2008

  4. ORA-00932:inkonsistente datatyper:forventet NUMBER blev LANG