logo

Diferença entre comando excluir e truncar

A diferença entre os comandos DELETE e TRUNCATE é a parte mais comum de uma pergunta de entrevista. Eles são usados ​​principalmente para excluir dados do banco de dados. A principal diferença entre eles é que a instrução delete exclui dados sem redefinir a identidade de uma tabela, enquanto o comando truncate redefine a identidade de uma tabela específica . Este artigo explica a visão geral completa dos comandos DELETE e TRUNCATE e suas diferenças, que são usadas principalmente de forma intercambiável, mas são totalmente diferentes.

Comando Excluir vs Truncar

O que é um comando DELETE?

É um Comando DML ou manipulação de dados usado para excluir registros de uma tabela que não são necessários no banco de dados. Remove a linha completa da tabela e produz a contagem de linhas excluídas. Precisamos da permissão de exclusão na tabela de destino para executar este comando. Também nos permite filtrar e excluir quaisquer registros específicos usando o ONDE cláusula da tabela.

Esclarece que temos um backup de nosso banco de dados antes de executar este comando, pois não podemos recuperar os registros excluídos usando esta consulta. Portanto, o backups de banco de dados nos permite restaurar os dados sempre que precisarmos deles no futuro.

A sintaxe a seguir explica o comando DELETE para remover dados da tabela:

 DELETE FROM table_name WHERE condition; 

O que é um comando TRUNCATE?

A instrução truncada é uma Comando DDL ou linguagem de definição de dados usado para remover dados completos da tabela sem remover a estrutura da tabela. Não podemos usar o ONDE cláusula com este comando, para que a filtragem de registros não seja possível. Depois de executar este comando, nós não é possível reverter os dados excluídos porque o log não é mantido durante a execução desta operação.

O comando truncate desaloca o páginas em vez de linhas e cria uma entrada para as páginas de desalocação em vez de linhas nos logs de transações. Este comando bloqueia as páginas em vez das linhas; portanto, requer menos bloqueios e recursos. Observe que não podemos usar a instrução truncate quando uma tabela é referenciada por uma chave estrangeira ou participa de uma visualização indexada.

alternativa xampp

A sintaxe a seguir explica o comando TRUNCATE para remover dados da tabela:

 TRUNCATE TABLE table_name; 

Principais diferenças entre DELETE e TRUNCATE

Os pontos a seguir explicam as diferenças entre os comandos excluir e truncar:

  1. A instrução DELETE é usada quando queremos remover alguns ou todos os registros da tabela, enquanto a instrução TRUNCATE excluirá linhas inteiras de uma tabela.
  2. DELETE é um comando DML, pois apenas modifica os dados da tabela, enquanto TRUNCATE é um comando DDL.
  3. O comando DELETE pode filtrar os registros/tuplas usando a cláusula WHERE. Porém, o comando TRUNCATE não permite usar ONDE cláusula, portanto, não podemos filtrar linhas durante o truncamento.
  4. DELETE ativa todos excluir gatilhos na mesa para atirar. No entanto, nenhum gatilho é acionado na operação truncada porque ela não opera em linhas individuais.
  5. DELETE executa a exclusão linha por linha, uma de cada vez, da tabela, na ordem em que foram processadas. No entanto, TRUNCATE opera em páginas de dados em vez de linhas porque excluiu dados inteiros da tabela de uma vez.
  6. A instrução DELETE apenas exclui registros e não redefine o identidade da mesa , enquanto TRUNCATE redefine a identidade de uma tabela específica.
  7. O comando DELETE requer mais bloqueios e recursos de banco de dados porque adquire o bloqueio em cada linha excluída. Por outro lado, TRUNCATE adquire o bloqueio na página de dados antes de excluí-la; portanto, requer menos bloqueios e poucos recursos.
  8. A instrução DELETE faz uma entrada no Log de transações para cada linha excluída, enquanto TRUNCATE registra o log de transações para cada página de dados.
  9. O comando TRUNCATE é mais rápido do que o comando DELETE, pois ele desaloca as páginas de dados em vez de linhas e registra páginas de dados em vez de linhas nos logs de transações.
  10. Depois que o registro for excluído usando o comando TRUNCATE, não poderemos recuperá-lo. Em contraste, podemos recuperar os dados excluídos que removemos da operação DELETE.

Gráfico de comparação DELETE vs. TRUNCATE

O gráfico de comparação a seguir explica suas principais diferenças de maneira rápida:

Base de comparação EXCLUIR TRUNCAR
Definição A instrução delete é usada para remover um ou vários registros de uma tabela existente, dependendo da condição especificada. O comando truncate remove os dados completos de uma tabela existente, mas não a própria tabela. Ele preserva a estrutura ou esquema da tabela.
Linguagem É um comando DML (Data Manipulation Language). É um comando DDL (linguagem de definição de dados).
ONDE Ele pode usar a cláusula WHERE para filtrar qualquer linha ou dado específico da tabela. Ele não usa a cláusula WHERE para filtrar registros da tabela.
Permissão Precisamos ter permissão DELETE para usar este comando. Precisamos ter permissão ALTER para usar este comando.
Trabalhando Este comando elimina registros um por um. Este comando exclui toda a página de dados que contém os registros.
Trancar Isso bloqueará a linha antes da exclusão. Isso bloqueará a página de dados antes da exclusão.
Identidade da Tabela Este comando não redefine a identidade da tabela porque apenas exclui os dados. Sempre redefine a identidade da tabela.
Transação Ele mantém logs de transações para cada registro excluído. Ele não mantém logs de transações para cada página de dados excluída.
Velocidade Sua velocidade é lenta porque manteve o registro. Sua execução é rápida porque exclui dados inteiros de uma vez, sem manter logs de transações.
Acionar Este comando também pode ativar o gatilho aplicado na mesa e fazer com que ela dispare. Este comando não ativa os gatilhos aplicados na mesa para disparar.
Restaurar Ele nos permite restaurar os dados excluídos usando a instrução COMMIT ou ROLLBACK. Não podemos restaurar os dados excluídos após a execução deste comando.
Visualização indexada Pode ser usado com visualizações indexadas. Não pode ser usado com visualizações indexadas.
Espaço A instrução DELETE ocupa mais espaço de transação do que truncar porque mantém um log para cada linha excluída. A instrução TRUNCATE ocupa menos espaço de transação porque mantém um log de transações para toda a página de dados em vez de cada linha.

Conclusão

Neste artigo, fizemos uma comparação entre as instruções delete e truncate. Concluímos que o comando DELETE é utilizado quando queremos customizar a exclusão de registros da tabela. E um comando TRUNCATE é utilizado quando não queremos deixar nenhum registro ou dado na tabela, ou seja, queremos esvaziar a tabela.