[shorts] Saiba a diferença entre DELETE e TRUNCATE - Banco de Dados

banco-de-dados sem-categoria

Esses dias bateu a curiosidade de saber a diferença entre os comando SQL TRUCANTE e DELETE. Apesar de pequena a primeiro momento, encontrei e entendi a explicação para utilizar um ou outro dependendo da situação.

Borá lá ( ͡👁️ ͜ʖ ͡👁️)

Comparativo entre DELETE e TRUNCATE

ComparaçãoDELETETRUNCATE
TipoDML (Data Manipulation Language)DLL (Data Definition Language)
WHEREPode ser utilizado a clausula WHERE para especificar as tuplas ( ou linhas, registros, …)Não tem a opção de usar a clausula WHERE e irá apagar todas as tuplas
locksSerá dado lock para cada linha que for ser excluída (requer mais recursos)Será dado lock somente na data page (requer menos recursos)
VelocidadeÉ mais lenta devido fazer operações linha a linha e fazer muito uso de logÉ mais rápido por registrar apenas o data page e fazer menos uso do log
ReverterÉ possível dar ROLLBACK e desfazer a operação de exclusãoNão é possível reverter a operação de exclusão

TRUNCATE é mais eficiente e performático para excluir tuplas sem especificar um filtro (cláusula WHERE)
**DELETE** é mais lento, porém consigo dar ROLLBACK e reverter a operação

TRUNCATE vs delete

Conclusão

A minha intenção foi mostrar o comparativo entre os comandos e dar uma maior compressão dos motivos de se utilizar um ou outro. Espero que eu tenha conseguido clarear essa diferença.