Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a melhor maneira de excluir linhas antigas do MySQL continuamente?


Tente criar um evento que será executado no banco de dados automaticamente após o intervalo de tempo desejado.

Aqui está um exemplo:Se você deseja excluir entradas com mais de 30 dias de alguma tabela 'tableName', com entrada de coluna 'datetime'. Em seguida, a consulta a seguir é executada todos os dias, o que fará a ação de limpeza necessária.
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)

Precisamos adicionar ON COMPLETION PRESERVE para manter o evento após cada execução. Você pode encontrar mais informações aqui:http://www.mysqltutorial .org/mysql-triggers/working-mysql-scheduled-event/