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ção | DELETE | TRUNCATE |
---|---|---|
Tipo | DML (Data Manipulation Language) | DLL (Data Definition Language) |
WHERE |
Pode 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 |
locks | Será 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ão |
Nã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.
Top comments (0)