MySQLTruncate vs Delete en MySQL/MariaDB (Diferencias)

Truncate vs Delete en MySQL/MariaDB (Diferencias)

-

- Advertisment -

Si lo que deseas es eliminar datos de una tabla, en MySQL tienes 2 formas de hacerlo, normalmente usamos el delete from table para ese tipo de acciones, es un DML ( lenguaje de manipulación de datos) por tanto admite parámetros usando condiciones, es decir soporta la clausula WHERE además que te devuelve el numero de archivos afectados en la operación y puedes incluso usar el LIMIT. recuerden que el DELETE borra registros 1 por 1 además que la tabla recuerda el valor AUTO_INCREMENT en caso la hayas vaciado.

En el caso del TRUNCATE lo que se realiza es destruir la tabla y luego recrearla ya que es un DLL (lenguaje de definición de datos), lo que lo hace más rápido y no devuelve registros afectados, TRUNCATE TABLE es una extensión de Oracle SQL adoptada en MySQL. y optimizado para MySQL 5.0.3, antes de la versión 5.0.3 ambos comandos son prácticamente lo mismo.

Usando DELETE es posible de hacer:

delete from TABLA where userid<10 limit 2

y si quieres eliminar todos los registros de la tabla simplemente no le pones la clausula WHERE, recuerda que este tipo de eliminación lo hace registro por registro

delete from TABLE

Usando TRUNCATE:

TRUNCATE table

TRUNCATE TABLE muy rápido. La operación se mapea a DELETE si hay restricciones de clave foránea que referencien la tabla. Para otros motores, TRUNCATE TABLE difiere de DELETE FROM en los siguientes puntos en MySQL 5.0.3:

  • Las operaciones de truncado destruyen y recrean la tabla, que es mucho más rápido que borrar registros uno a uno.
  • Las operaciones de truncado no son transaccionales; ocurre un error al intentar un truncado durante una transacción o un bloqueo de tabla.
  • No se retorna el número de registros borrados.
  • Mientras el fichero de definición de la tabla tbl_name.frm sea válido, la tabla puede recrearse como una vacía con TRUNCATE TABLE, incluso si los ficheros de datos o de índice se han corrompido.
  • El tratador de tablas no recuerda el último valor AUTO_INCREMENT usado, pero empieza a contar desde el principio. Esto es cierto incluso para MyISAM y InnoDB, que normalmente no reúsan valores de secuencia.

Resumen de Diferencias:

  1. Ambas eliminan los datos, no la estructura de la tabla.
  2. DELETE permite la eliminación condicional de los registros.
  3. DELETE es una operación registrada en el log de transacciones, y registrar cada eliminación de manera individual.
  4. TRUNCATE es una operación registrada en el log de transacciones, pero en conjunto, no por eliminación individual. TRUNCATE se registra como una liberación de las páginas de datos en las cuales existen los datos.
  5. TRUNCATE es más rápida que DELETE.
  6. Ambas se pueden deshacer con un ROLLBACK.
  7. TRUNCATE reiniciará el contador para una tabla que contenga una columna AUTO_INCREMENT .
  8. DELETE mantendrá el contador de la tabla para una columna IDENTITY.
  9. TRUNCATE no desencadena un TRIGGER, DELETE sí.
  10. TRUNCATE es un comando DDL(lenguaje de definición de datos como un CREATE, ALTER, DROP, etc.) mientras que DELETE es un DML(lenguaje de manipulación de datos como un SELECT, INSERT, UPDATE).

2 COMENTARIOS

  1. Estimado, excelente explicación sobre el tema, me aclaró muchas dudas.
    muchas gracias.

    pda: te recomiendo utilizar facebook commets en vez de usar los de wordpress.

  2. En el punto nº 6 del resúmen de diferencias, se indica: “Ambas se pueden deshacer con un ROLLBACK.”, pero he comprobado que en MySQL 8.0.17 no permite hacer ROLLBACK al TRUNCATE table.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Últimas Noticias

WordPress – Crear BBCODE o shortcode personalizados

Los BBCODES o "shortcode" son esas funciones que tiene Wordpress y que se usan con corchetes, que generalmente te...

WordPress – Enviar título de la página o campo oculto, en Contact Form 7

Problema: Tengo un cliente que tiene una web con muchos productos y en todas sus páginas usa el mismo formulario...

Laravel – Modo Debug según IP

En algunos casos se necesita el modo DEBUG según IP, por ejemplo cuando estamos en producción y tenemos un...

Reemplazar URLs cuando cambias de dominio en WordPress (también de http a https)

Cuando haces un cambio de dominio por alguna razón (antes te llamabas www.viejodominio.com y ahora www.nuevodominio.com) si bien ya...
- Advertisement -

Como ejecutar comandos Artisan desde consola Git

Voy a suponer que ya tienen instalado el composer y php de manera global y un proyecto en Laravel....

Ejecutar Composer y/o PHP de manera Global en Windows

Si por alguna razón al instalar Composer este no funciona desde cualquier ruta estando en linea de comandos (ya...

Debe leer

- Advertisement -

También podría gustarteRELACIONADA
Recomendada para usted