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

Qual è il modo migliore per eliminare le vecchie righe da MySQL su base continuativa?

Prova a creare un evento che verrà eseguito automaticamente sul database dopo l'intervallo di tempo desiderato.

Ecco un esempio:se si desidera eliminare voci che risalgono a più di 30 giorni fa da alcune tabelle 'tableName', con voce di colonna 'datetime'. Quindi la query seguente viene eseguita ogni giorno che eseguirà l'azione di pulizia richiesta.

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)

Dobbiamo aggiungere ON COMPLETION PRESERVE per mantenere l'evento dopo ogni corsa. Puoi trovare maggiori informazioni qui:http://www.mysqltutorial .org/mysql-triggers/working-mysql-scheduled-event/