web-dev-qa-db-fra.com

comparaison de tronquer vs supprimer dans mysql / sqlserver

Une chose m'a frappé dans la tête à propos de mysql/sqlserver, c'est-à-dire supprimer/tronquer

Lequel est le meilleur et le plus rapide?

où utiliser supprimer?

où utiliser tronquer?

29
user1414880

[~ # ~] supprimer [~ # ~]

  1. DELETE est une commande DML.
  2. L'instruction DELETE est exécutée à l'aide d'un verrou de ligne, chaque ligne de la table est verrouillée pour suppression.
  3. Nous pouvons spécifier des filtres dans la clause where
  4. Il supprime les données spécifiées si la condition existe.
  5. Supprimer active un déclencheur car l'opération est enregistrée individuellement.
  6. Plus lent que tronqué, car il conserve les journaux.
  7. La restauration est possible.

[~ # ~] tronque [~ # ~]

  1. TRUNCATE est une commande DDL.
  2. TRUNCATE TABLE verrouille toujours la table et la page mais pas chaque ligne.
  3. Impossible d'utiliser la condition Where.
  4. Il supprime toutes les données.
  5. TRUNCATE TABLE ne peut pas activer de déclencheur car l'opération n'enregistre pas les suppressions de lignes individuelles.
  6. Plus rapide en termes de performances, car il ne conserve aucun journal.
  7. La restauration est possible.


  • DELETE et TRUNCATE peuvent tous deux être annulés lorsqu'ils sont utilisés avec TRANSACTION (TRUNCATE peut être annulé dans SQL Server, mais pas dans MySQL).
  • s'il y a un PK avec incrémentation automatique, tronquer réinitialise le compteur

http://beginner-sql-tutorial.com/sql-delete-statement.htm

95
bgs

Différence

La différence la plus importante est que les opérations DELETE sont sécurisées et enregistrées pour les transactions, ce qui signifie que DELETE peut être annulé. TRUNCATE ne peut pas être effectué dans une transaction et ne peut pas être annulé. Étant donné que TRUNCATE n'est pas enregistré, la récupération d'une table TRUNCATEd par erreur est un problème beaucoup plus important que la récupération à partir d'une suppression.

DELETE échouera si les contraintes de clé étrangère sont rompues; TRUNCATE peut ne pas respecter les contraintes de clé étrangère (c'est le cas pour les tables InnoDB). DELETE déclenchera tous les déclencheurs ON DELETE; TRUNCATE ne le fera pas.

PLUS RAPIDE

Les opérations de troncature suppriment et recréent la table, ce qui est beaucoup plus rapide que la suppression de lignes une par une, en particulier pour les grandes tables.

Où utiliser

tronquer

lorsque la table est définie sur vide et nécessite la réinitialisation des clés d'incrémentation automatique à 1. C'est plus rapide que DELETE car il supprime toutes les données. DELETE analysera la table pour générer un nombre de lignes affectées.

supprimer

besoin de lignes à supprimer sur la base d'une clause WHERE facultative. besoin de journaux et appliquer des contraintes de clé étrangère

10
naveen goyal

La commande DELETE est utilisée pour supprimer des lignes d'une table

TRUNCATE supprime toutes les lignes d'une table. L'opération ne peut pas être annulée et aucun déclencheur ne sera déclenché. En tant que tel, TRUNCATE est plus rapide et n'utilise pas autant d'espace d'annulation qu'un DELETE.

2
Lingasamy Sakthivel

Différence:

1) supprimez les données complètes de la table et l'ID d'incrémentation automatique suivant commencera par 1 Où la suppression commencera avec l'ID suivant.
2) Les deux conserveront la structure intacte et supprimeront uniquement les données.
3) avec la suppression, vous pouvez utiliser limit alors que, comme avec la troncature, vous ne pouvez pas.

0
Suresh Kamrushi