logo

Diferència entre l'ordre Suprimir i Truncar

La diferència entre l'ordre DELETE i TRUNCATE és la part més habitual d'una pregunta d'entrevista. S'utilitzen principalment per eliminar dades de la base de dades. La principal diferència entre ells és que la instrucció delete elimina les dades sense restablir la identitat d'una taula, mentre que l'ordre truncate restableix la identitat d'una taula concreta. . Aquest article explica la visió general completa de l'ordre DELETE i TRUNCATE i les seves diferències que s'utilitzen principalment de manera intercanviable però que són totalment diferents.

Suprimeix vs Trunca l'ordre

Què és una ordre DELETE?

És un DML o comanda de manipulació de dades s'utilitza per eliminar registres d'una taula que no és necessari a la base de dades. Elimina la fila completa de la taula i produeix el recompte de files suprimides. Necessitem el permís d'eliminació de la taula de destinació per executar aquesta ordre. També ens permet filtrar i suprimir qualsevol registre específic mitjançant el ON clàusula de la taula.

Aclareix que tenim una còpia de seguretat de la nostra base de dades abans d'executar aquesta ordre perquè no podem recuperar els registres suprimits amb aquesta consulta. Per tant, el còpies de seguretat de bases de dades ens permeten restaurar les dades sempre que ho necessitem en el futur.

La sintaxi següent explica l'ordre DELETE per eliminar dades de la taula:

 DELETE FROM table_name WHERE condition; 

Què és una ordre TRUNCATE?

La declaració truncada és a Comandament DDL o llenguatge de definició de dades s'utilitza per eliminar dades completes de la taula sense eliminar l'estructura de la taula. No podem utilitzar el ON clàusula amb aquesta ordre, de manera que el filtratge de registres no és possible. Després d'executar aquesta comanda, nosaltres no pot revertir les dades suprimides perquè el registre no es manté mentre es realitza aquesta operació.

L'ordre truncate desassigna el fitxer pàgines en lloc de files i fa una entrada per a les pàgines de desassignació en lloc de files als registres de transaccions. Aquesta ordre bloqueja les pàgines en lloc de les files; per tant, requereix menys panys i recursos. Tingueu en compte que no podem utilitzar la instrucció truncate quan una taula fa referència a una clau estrangera o participa en una vista indexada.

què és f5 al teclat

La sintaxi següent explica l'ordre TRUNCATE per eliminar dades de la taula:

 TRUNCATE TABLE table_name; 

Diferències clau entre DELETE i TRUNCATE

Els punts següents expliquen les diferències entre l'ordre delete i truncate:

  1. La instrucció DELETE s'utilitza quan volem eliminar alguns o tots els registres de la taula, mentre que la sentència TRUNCATE suprimirà files senceres d'una taula.
  2. DELETE és una ordre DML, ja que només modifica les dades de la taula, mentre que TRUNCATE és una ordre DDL.
  3. L'ordre DELETE pot filtrar el registre/tuples mitjançant la clàusula WHERE. Tanmateix, l'ordre TRUNCATE no permet utilitzar-lo ON clàusula, de manera que no podem filtrar files mentre trunquem.
  4. DELETE ho activa tot suprimir activadors a la taula per disparar. Tanmateix, no s'activa cap disparador a l'operació de truncat perquè no funciona en files individuals.
  5. DELETE realitza l'eliminació fila per fila d'una en una de la taula, en l'ordre en què es van processar. Tanmateix, TRUNCATE funciona a pàgines de dades en lloc de files perquè eliminava dades de taula senceres alhora.
  6. La instrucció DELETE només suprimeix registres i no restableix el fitxer identitat de la taula , mentre que TRUNCATE restableix la identitat d'una taula concreta.
  7. L'ordre DELETE requereix més bloquejos i recursos de base de dades perquè adquireix el bloqueig a cada fila suprimida. En canvi, TRUNCATE adquireix el bloqueig a la pàgina de dades abans d'esborrar la pàgina de dades; per tant, requereix menys panys i pocs recursos.
  8. La instrucció DELETE fa una entrada al fitxer registre de transaccions per a cada fila suprimida, mentre que TRUNCATE registra el registre de transaccions per a cada pàgina de dades.
  9. L'ordre TRUNCATE és més ràpid que l'ordre DELETE, ja que desassigna les pàgines de dades en lloc de les files i registra les pàgines de dades en lloc de les files als registres de transaccions.
  10. Un cop s'elimina el registre mitjançant l'ordre TRUNCATE, no el podrem recuperar. En canvi, podem recuperar les dades esborrades que hem eliminat de l'operació DELETE.

Gràfic de comparació DELETE vs TRUNCATE

El següent gràfic de comparació explica les seves principals diferències d'una manera ràpida:

Base de comparació ELIMINAR TRUNCAR
Definició La instrucció delete s'utilitza per eliminar registres únics o múltiples d'una taula existent en funció de la condició especificada. L'ordre truncate elimina les dades completes d'una taula existent però no la taula en si. Conserva l'estructura o l'esquema de la taula.
Llenguatge És una ordre DML (Llenguatge de manipulació de dades). És una ordre DDL (Llenguatge de definició de dades).
ON Pot utilitzar la clàusula WHERE per filtrar qualsevol fila o dades específiques de la taula. No utilitza la clàusula WHERE per filtrar registres de la taula.
Permís Hem de tenir el permís DELETE per utilitzar aquesta ordre. Hem de tenir permís ALTER per utilitzar aquesta ordre.
Treball Aquesta ordre elimina els registres un per un. Aquesta ordre suprimeix tota la pàgina de dades que conté els registres.
Bloqueig Bloquejarà la fila abans de la supressió. Bloquejarà la pàgina de dades abans de la supressió.
Identitat de taula Aquesta ordre no restableix la identitat de la taula perquè només elimina les dades. Sempre restableix la identitat de la taula.
Transacció Manté registres de transaccions per a cada registre suprimit. No manté registres de transaccions per a cada pàgina de dades suprimida.
Velocitat La seva velocitat és lenta perquè va mantenir el registre. La seva execució és ràpida perquè elimina dades senceres alhora sense mantenir els registres de transaccions.
Disparador Aquesta ordre també pot activar el disparador aplicat a la taula i provocar que es disparin. Aquesta ordre no activa els disparadors aplicats a la taula per disparar.
Restaurar Ens permet restaurar les dades suprimides mitjançant la instrucció COMMIT o ROLLBACK. No podem restaurar les dades suprimides després d'executar aquesta ordre.
Vista indexada Es pot utilitzar amb vistes indexades. No es pot utilitzar amb vistes indexades.
Espai La instrucció DELETE ocupa més espai de transacció que truncada perquè manté un registre per a cada fila suprimida. La instrucció TRUNCATE ocupa menys espai de transacció perquè manté un registre de transaccions per a tota la pàgina de dades en lloc de cada fila.

Conclusió

En aquest article, hem fet una comparació entre suprimir i truncar la declaració. Hem arribat a la conclusió que s'utilitza una ordre DELETE quan volem personalitzar l'eliminació de registres de la taula. I s'utilitza una ordre TRUNCATE quan no volem deixar cap registre o dada a la taula, és a dir, volem buidar la taula.