Trackback: TRUNCATE x DELETE

Excelente artigo do  Gustavo Maia Aguiar…

Quote:

Truncate versus Delete – Uma explicação mais detalhada
http://gustavomaiaaguiar.spaces.live.com/Blog/cns!F4F5C630410B9865!1112.entry?sa=763531721

"… comparativo entre o DELETE e o TRUNCATE. … o truncate é mais rápido, mas que o DELETE aceita cláusula WHERE (isso já está no MOC e no Books OnLine). Vejamos um pouco mais de perto seus comportamentos e efeitos colaterais bem como alguns mitos que merecem ser esclarecidos…."

Leiam, o artigo, achei bem completo e interessante. Vou tomar a liberdade (obrigado, Gustavo), de destacar os pontos principais, sempre que possível transcrevendo a entrada do blog:

  • Operações minimamente logadas:
    BULK INSERT ou BCP
    SELECT INTO
    CREATE INDEX
    WRITETEXT e UPDATETEXT
  • Quando uma operação minimamente logada é executada, o SQL Server efetua todo o trabalho necessário, mas ao invés de logar cada linha alterada no log de transações, ele apenas faz uma anotação dizendo que a operação foi realizada.
  • Se um objeto está sendo excluído como um todo qual seria o objetivo de logar os registros que foram excluídos e não participam mais do banco de dados ? Isso não traria benefícios ao recovery do banco de dados
  • TRUNCATE gera menos log que DELETE
  • TRUNCATE gera menos locks
  • TRUNCATE não dispara triggers (cuidado com tabelas envolvidas em replicação!)
  • TRUNCATE não funciona para tabelas referenciadas por FOREIGN KEYS ou INDEXED VIEWS
  • TRUNCATE requer privilégio db_ddladmin

Abs!

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s