Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

Archive for agosto \24\+00:00 2022

Comando SQL DELETE vs TRUNCATE

Posted by karuta em agosto 24, 2022

DELETEVs.TRUNCATE
DELETE é um comando DML.Tipo de linguagem SQLTRUNCATE é um comando DDL.
O comando DELETE pode conter uma cláusula WHERE para excluir apenas determinadas linhas.DefiniçãoO comando TRUNCATE é usado para excluir todos os dados de uma tabela. Você não pode usar uma cláusula WHERE para filtrar determinadas linhas.
O comando DELETE define bloqueios em cada registro, exigindo mais bloqueios e recursos do que o comando TRUNCATE.Bloqueios e RecursosO comando TRUNCATE requer apenas um bloqueio no nível da tabela e não em cada linha.
Se você usar uma transação BEGIN, poderá ROLLBACK o comando.BEGIN/ROLLBACKSe você usar uma transação BEGIN, poderá ROLLBACK o comando.
O comando DELETE registrará os dados das linhas excluídas no log de transações.Uso do log de transaçõesO comando TRUNCATE registra apenas a tabela excluída como um todo no log de transações.
O comando DELETE ativará quaisquer gatilhos aplicados à tabela, ou seja, um gatilho de auditoria, a menos que os gatilhos sejam desabilitados primeiro.GatilhosO TRUNCATE não ativará nenhum gatilho aplicado à tabela. Portanto, os gatilhos de auditoria para registrar quem excluiu uma linha não serão acionados.
O comando DELETE não propagará novamente os valores de identidade da tabela.Colunas de identidadeO comando TRUNCATE irá propagar novamente (redefinir) os valores de identidade da tabela.
Ter chaves estrangeiras e/ou visualizações indexadas não tem efeito no comando DELETE, desde que as linhas que você está tentando excluir não sejam referenciadas por outras tabelas.Chaves estrangeiras e visualizações indexadasVocê não pode usar o comando TRUNCATE se a tabela for referenciada por uma chave estrangeira ou qualquer exibição indexada.

DELETE = O tempo total para 15 milhões de linhas de dados levou 118 segundos

TRUNCATE = 15 milhões de linhas de dados levou menos de 1 segundo

Se você precisar excluir apenas determinadas linhas de uma tabela, precisará usar o comando DELETE. No entanto, se você precisar excluir todos os registros em uma tabela, deverá usar o comando TRUNCATE, desde que todas as regras acima se apliquem à sua situação.

Posted in sql server | Leave a Comment »