sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la mejor manera de eliminar filas antiguas de MySQL de forma continua?

Intente crear un evento que se ejecutará en la base de datos automáticamente después del intervalo de tiempo que desee.

Aquí hay un ejemplo:si desea eliminar entradas que tienen más de 30 días de antigüedad de alguna tabla 'tableName', que tiene la entrada de columna 'datetime'. Luego, la siguiente consulta se ejecuta todos los días, lo que realizará la acción de limpieza requerida.

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)

Necesitamos agregar ON COMPLETION PRESERVE para mantener el evento después de cada ejecución. Puede encontrar más información aquí:http://www.mysqltutorial .org/mysql-triggers/working-mysql-scheduled-event/