Truncate vs Delete en MySQL: Diferencias y usos

Truncate vs Delete. La mayoría de las veces es posible que se pregunte la diferencia entre TRUNCATE vs DELETE en MYSQL, dónde usarlo y cuándo usarlo. En este artículo, cubriré tanto como sea posible.

Truncate vs Delete

Si bien estas dos instrucciones a simple vista realizan lo mismo y es de eliminar los registros de una determinada tabla, pero entre ellos destacan varios factores:  La velocidad de ejecución, EL auto incremento, etc.

COMANDO DELETE

DELETE [ LOW_PRIORITY ] [ QUICK ] [ IGNORE ] FROM table
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT number_rows];
  • DELETE es un comando DML.
  • Después del comando DELETE, si la tabla tiene PrimaryKey con AutoIncrement, el contador AutoIncrement no se restablecerá y se inicia desde el siguiente identificador.
  • La instrucción DELETE se ejecuta mediante un bloqueo de fila, cada fila de la tabla se bloquea para su eliminación.
  • Podemos especificar filtros en la cláusula WHERE
  • Elimina los datos especificados si donde existe la condición de otro lado eliminará todos los datos.
  • Eliminar activa un desencadenador porque la operación se registra individualmente.
  • Transacción segura. Por lo tanto, todos los datos eliminados se pueden revertir.
  • Más lento que truncar porque, mantiene los registros.
  • La reversión es posible.

COMANDO TRUNCATE

TRUNCATE TABLE [database_name.]table_name;
  • TRUNCATE es un comando DDL.
  • Después del comando TRUNCATE, si hay PrimaryKey con AutoIncrement, el contador AutoIncrement se restablecerá a 1.
  • TRUNCATE TABLE siempre bloquea la tabla y la página, pero no cada fila.
  • No se puede utilizar la condición WHERE.
  • Elimina todos los datos de la tabla.
  • TRUNCATE TABLE no puede activar un desencadenador porque la operación no registra eliminaciones de filas individuales.
  • Más rápido en el rendimiento prudente, porque no mantiene ningún registro.
  • No es seguro para transacciones. Por lo tanto, no podemos revertir los datos.
  • La reversión no es posible solamente.

Lo Común entre las dos clausulas

  • DELETE y TRUNCATE se pueden revertir cuando se usan con TRANSACTION (TRUNCATE se puede revertir en SQL Server, pero no en MySQL).
  • DELETE y TRUNCATE mantienen intacta la estructura de la tabla y solo elimina los datos.
  • Si hay un PK con incremento automático, truncar restablecerá el contador

Diferencia entre el comando TRUNCATE y DELETE

La diferencia más importante es que las operaciones DELETE son seguras para transacciones y se registran, lo que significa que DELETE se puede revertir.

TRUNCATE DELETE
Con esta sentencia podemos vaciar todo el contenido una tabla de una base de datos. La estructura de dicha tabla permace intacta.

TRUNCATE no se puede realizar dentro de una transacción y no se puede revertir. Dado que TRUNCATE no se registra recuperando una tabla TRUNCATEd por error es un problema mucho mayor que recuperarse de un DELETE.

Esta sentencia elimina una serie de registros/filas de una tabla, si no se especifica la claúsula WHERE se eliminarán todos los registros de la tabla del mismo modo que TRUNCATE.

DELETE fallará si se rompen las restricciones de clave externa; TRUNCATE puede no respetar las restricciones de clave externa (lo hace para las tablas de InnoDB). DELETE activará cualquier desencadenador ON DELETE; TRUNCATE no lo hará.

Rápides en las dos opciones

Truncar las operaciones quitar y volver a crear la tabla, que es mucho más rápido que eliminar filas una por una, especialmente para tablas grandes.

Dónde usar

Truncar Delete
Cuando la tabla se establece en vacío y necesita restablecer las teclas de incremento automático a 1. Es más rápido que DELETE porque elimina todos los datos. DELETE analizará la tabla para generar un recuento de filas afectadas. Necesita filas para eliminar en función de una cláusula WHERE opcional. necesitan registros y aplicar restricciones de clave externa

RESUMEN DIFERENCIA

1) Truncate elimina los datos completos de la tabla y el siguiente identificador de incremento automático comenzará con 1 mientras que la eliminación comenzará con el siguiente id.
2) Ambos mantendrán la estructura intacta y eliminarán solo los datos.
3) con delete puedes usar limit mientras que con truncate no puedes.

CONCLUSIÓN

Podemos usar cualquiera de los dos siempre y cuando sepamos lo que hace.
En este artículo hemos visto el funcionamiento, sintaxis, diferencias acerca de estos dos comandos de MySQL y ya somos capaces de elegir un comando para nuestras tablas.
Espero que esta diferencia les ayude a tomar una buena decisión en sus proyectos web

Me fascina la programación en diversos lenguajes y mas aún si son sistemas web o páginas web.

Entradas relacionadas

Integrar Bootstrap 3 Badge Colors

Integrar Bootstrap 3 Badge Colors

En este artículo vamos a integrar colores de fondo en la clase BADGE de Bootstrap 3. Integrar Bootstrap 3 Badge Colors. En el framework Bootstrap 3 por…

5 formar de validar checkbox

5 formar de validar checkbox

5 formar de validar checkbox. Aquí mostrare varias formas de validar checkbox usando jQuery y JavaScript, también usaremos funciones a nivel de formulario. Aquí debéis fijaros que…

Cómo mostrar ocultar DIV usando CHECKBOX

Cómo mostrar ocultar DIV usando CHECKBOX

Cómo mostrar ocultar DIV usando CHECKBOX?. Lo que haremos será trabajar en un div al hacer clic con el mouse usando jQuery, use el método toggle(). Por…

Enviar formulario usando checkbox

Enviar formulario usando checkbox

Enviar formulario usando checkbox. En este articulo veremos una forma de enviar un formulario HTML usando una casilla o varias casillas de verificación (checkbox). Por lo tanto,…

Limpiar Select2 jQuery

Limpiar Select2 jQuery: Ejemplo completo

Limpiar Select2 jQuery. En este articulo aprenderemos a restablecer para mostrar el marcador de posición select2. JQuery Select2 restablece y luego muestra el marcador de posición. Por…

Evitar duplicados al importar MySQL y PHP

Evitar duplicados al importar MySQL y PHP

Evitar duplicados al importar MySQL y PHP. La mayoría de sistemas web o de escritorio trabajan con importación de registros hacia la base de datos para optimizar…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *