sql >> Databasteknik >  >> RDS >> Mysql

Vilket är det bästa sättet att ta bort gamla rader från MySQL på rullande basis?

Försök att skapa händelse som körs på databasen automatiskt efter det tidsintervall du vill ha.

Här är ett exempel:Om du vill ta bort poster som är mer än 30 dagar gamla från någon tabell "tabellnamn", har kolumnposten "datumtid". Sedan körs följande fråga varje dag, vilket kommer att utföra nödvändiga saneringsåtgärder.

CREATE EVENT AutoDeleteOldNotifications
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY 
ON COMPLETION PRESERVE
DO 
DELETE LOW_PRIORITY FROM databaseName.tableName WHERE datetime < DATE_SUB(NOW(), INTERVAL 30 DAY)

Vi måste lägga till ON COMPLETION PRESERVE att behålla eventet efter varje löpning. Du kan hitta mer information här:http://www.mysqltutorial .org/mysql-triggers/working-mysql-scheduled-event/



  1. Kommer ANSI JOIN jämfört med icke-ANSI JOIN-frågor att fungera annorlunda?

  2. Få positionen för en karaktär i en sträng i SQLite med Instr()

  3. Topp 5 datamodelleringsverktyg för SQL Server

  4. Hur kan jag VÄLJA flera kolumner i ett CASE NÄR på SQL Server?