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?
[~ # ~] supprimer [~ # ~]
[~ # ~] tronque [~ # ~]
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.
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.
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.
besoin de lignes à supprimer sur la base d'une clause WHERE facultative. besoin de journaux et appliquer des contraintes de clé étrangère
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
.
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.