SQL Server : DELETE FROM ou TRUNCATE TABLE ?
Ces 2 opérations servent à supprimer des données d'une table, mais elles ont des caractéristiques très différentes qui font que le choix de leur utilisation n'est pas aisé.
TRUNCATE TABLE
Les plus :
-
Très rapide
- du fait qu'il n'y a pas chargement des données dans le cache, et une journalisation dans réduite (mais il y en une, similaire au DROP TABLE)
- Peut être intégré dans une transaction
- Libération de l'espace utilisé par la table
- Réinitialisation des champs compteurs (identity) (suite à remarque dans les commentaires)...
Les moins :
DELETE FROM
Les plus :
- Ne nécessite qu'un droit de DELETE sur la table
- Peut être intégré dans une transaction
- Peut être filtré via un WHERE et/ou une sous requête
- Peut être effectuée en cascade sur une clef étrangère
Les moins :
Lequel choisir ?
Pour une suppression complète d'une table, la préférence va clairement au TRAUNCATE TABLE si cette table n'est pas liée à d'autres, cette méthode est très rapide et n'impacte pas les ressources du serveur.
Si vous avez besoin de supprimer le contenu d'une très grosse table et que le TRUNCATE TABLE est impossible, essayez d'exécuter le DELETE FROM de la manière indiquée ici : http://blogs.codes-sources.com/christian/archive/2006/12/19/sql-server-2005-am-liorations-de-la-clause-top-et-delete-de-grandes-tables.aspx
Dans tous les autres cas le DELETE FROM est le choix qu'il faudra faire.
Bonne suppression…
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :