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

Was ist der beste Weg, um alte Zeilen fortlaufend aus MySQL zu löschen?

Versuchen Sie, ein Ereignis zu erstellen, das automatisch nach dem gewünschten Zeitintervall in der Datenbank ausgeführt wird.

Hier ist ein Beispiel:Wenn Sie Einträge löschen möchten, die älter als 30 Tage sind, aus einer Tabelle „tableName“, die den Spalteneintrag „datetime“ enthält. Dann wird jeden Tag die folgende Abfrage ausgeführt, die die erforderliche Bereinigungsaktion durchführt.

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)

Wir müssen ON COMPLETION PRESERVE hinzufügen um das Ereignis nach jedem Lauf zu behalten. Weitere Informationen finden Sie hier:http://www.mysqltutorial .org/mysql-triggers/working-mysql-scheduled-event/