DIFERENCIAS ENTRE DELETE TABLE , TRUNCATE TABLE y DROP TABLE
Diferencias entre DELETE, TRUNCATE y DROP TABLE en #SQLServer
- La sentencia "truncate table" vacía la tabla (elimina todos los registros) y vuelve a crear la tabla con la misma estructura.
- La diferencia con "drop table" es que esta sentencia borra la tabla, "truncate table" la vacía.
- La diferencia con "delete" es la velocidad, es más rápido "truncate table" que "delete" (se nota cuando la cantidad de registros es muy grande) ya que éste borra los registros uno a uno pero no elimina indices ni los punteros de los autonumericos.
Otra diferencia es la siguiente: cuando la tabla tiene un campo "auto_increment", si borramos todos los registros con "delete" y luego ingresamos un registro, al cargarse el valor en el campo autoincrementable, continúa con la secuencia teniendo en cuenta el valor mayor que se había guardado; si usamos "truncate table" para borrar todos los registros, al ingresar otra vez un registro, la secuencia del campo autoincrementable vuelve a iniciarse en 1.
Por ejemplo, tenemos la tabla "Pacientes" con el campo "Código" definido "auto_increment", y el valor más alto de ese campo es "5", si borramos todos los registros con "delete" y luego ingresamos un registro sin valor de código, se guardará el valor "6"; si en cambio, vaciamos la tabla con "truncate table", al ingresar un nuevo registro sin valor para el código, iniciará la secuencia en 1 nuevamente.
Referencias
https://www.linuxhispano.net/2012/02/06/diferencia-entre-delete-truncate-y-drop-en-sql/
https://www.mundosql.eu/2016/02/10/diferencias-entre-delete-truncate-y-drop-table-en-sqlserver/
https://sql-listo.com/optimizacion/diferencia-entre-truncate-y-delete/
Comentarios