sql >> Databasteknik >  >> RDS >> Mysql

mysql - sök tidsstämpel efter timme på dagen

Du kan använda HOUR() funktion:

SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9

Tyvärr, den här frågans prestanda kommer att vara hemsk , så snart du går över några tusen rader - funktioner är inte indexerbara, så det kommer att göras en fullständig tabellsökning varje gång den här frågan körs.

Vad vi gjorde i en liknande situation:vi skapade en annan kolumn updatetime_hour , indexerade det och fyllde i det vid infogning (och uppdaterade vid uppdatering); då blir frågan snabb:

SELECT * FROM 'table' WHERE `updatetime_hour` = 9

Ja, vi har avnormaliserat data, och det är lite mer hushållning, men jag har ännu inte sett en snabbare lösning. (Vi övervägde och mätte utlösare för infogning och uppdatering för att fylla i updatetime_hour från updatetime , men beslutade sig emot för prestation; se om de skulle vara användbara för dig.)



  1. Är det någon skada i att återställa den automatiska ökningen?

  2. PHP Kontrollera om strängen innehåller en bokstav

  3. Hur väljer man alla poster från en tabell som inte finns i en annan tabell?

  4. Att förstå Postgres radstorlekar