es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar registros de la tabla, si supera los 100.000 registros.

Tengo una condición, en la que en los registros de auditoría, si los registros exceden los 100k, entonces borro los registros antiguos anteriores. No quiero borrar todos los 100k registros, sino solo los registros antiguos. Quiero mantener los últimos 100k registros.

A continuación se muestra una consulta que he intentado, por favor, alguien me ayude, cómo preparar la consulta.

DELETE FROM audit_logs WHERE
id NOT IN (SELECT id FROM audit_logs ORDER BY ID DESC LIMIT 100000);
Tags:  ,

Answer

  1. Avatar for davy.ai

    Consulta de MySQL para eliminar registros antiguos y mantener los últimos 100.000 registros en los registros de auditoría

    Si desea eliminar los registros antiguos de su tabla de registros de auditoría y mantener solo los últimos 100.000 registros, puede utilizar la siguiente consulta de MySQL:

    DELETE FROM audit_logs 
    WHERE id NOT IN (
        SELECT id 
        FROM (
            SELECT id 
            FROM audit_logs 
            ORDER BY id DESC 
            LIMIT 100000
        ) temp
    );
    

    Esta consulta eliminará todos los registros en la tabla de registros de auditoría que no tengan un ID en los últimos 100.000 registros, que son seleccionados por la subconsulta que ordena los registros por ID en orden descendente y selecciona solo los primeros 100.000 registros.

    Al utilizar una subconsulta para seleccionar los últimos 100.000 registros, puede garantizar que solo se eliminarán los registros antiguos mientras que los registros más recientes se mantienen en su tabla de registros de auditoría.

Comments are closed.