Optimizacion

Cuando utilizar delete o truncate table: Cual es la diferencia entre Truncate table y Delete from

Diferencia entre Truncate table y Delete from

delete vs truncate




«Para los que desconocen el funcionamiento de Truncate Table, es parecido  a ejecutar una declaración  Delete sin la claúsula Where»

Quizás para algunos desarrolladores existe la duda, que es mejor Delete o Truncate , la respuesta es depende de la finalidad de nuestro desarrollo, podría decirles que la mas importante seria, truncate no deja rastros en el log, a diferencia que el delete genera registro de transacciones, si quisiéramos revertir datos borrados el delete sera el mejor

 Sin embargo existe una extensa lista de diferencias, nada mejor que mirarlas a detalle

Diferencia entre truncate y delete

TRUNCATE TABLE
DELETE FROM
  • Es una operación DDL.
  • Es una operación DML.
  • No permite el borrado selectivo. TRUNCATE TABLE elimina todo el contenido de la tabla.
  • Permite el borrado selectivo, mediante la clausula WHERE.
  • No se puede ejecutar, si la tabla tiene asociadas, aun si no existiesen registros en la tabla que contiene la FK.
  • Se puede ejecutar si hay FK asociadas a la tabla, pero siempre y cuando no tenga registros asociados o la FK este deshabilitada.
  • Es la forma más rápida de eliminar el contenido de una tabla.
  • Es más lenta.
  • No se activa ningún trigger al ejecutarse (a partir de SQL Server 2005, es posible capturar el evento mediante un DDL trigger, pero a modo de auditoría, no es posible tener acceso a los valores que fueron eliminados).
  • Puede activarse el trigger de ON DELETE y poder determinar que registros están siendo eliminados. siendo eliminados.
  • En caso que la tabla tuviese un campo Identity, se resetea el valor a 1 (o al valor base determinado en el campo).
  • No resetea el valor del campo Identity, en caso que la tabla tuviese uno.
  • TRUNCATE TABLE desasocia (deallocate) las páginas de datos de la tabla.
  • DELETE FROM marca cada registro afectado, como eliminado.
  • El logueo en el transaction log es mínimo. Solo registra el dealloc de las páginas de datos.
  • Loguea cada operación sobre los registros afectados.
  • No puede ser ejecutado si la tabla tiene asociadas vistas indexadas.
  • Se puede ejecutar si la tabla tiene vistas indexadas.




Tabla cortesia de grimpidev

 

Truncate elimina los datos por páginas, en cambio un delete lo hace registro por registro
por ende tener cuidado  ya que no pasa por el log de transaciones de nuestra base de datos, lo que significa que si haces truncate olvidate de recuperar los datos ?

Deja una respuesta

WP to LinkedIn Auto Publish Powered By : XYZScripts.com