Différence entre drop table et tronquer table?
-
02-07-2019 - |
Question
Je construis certaines tables dans le cadre de la synthèse de mon rapport. Je n'ai pas du tout besoin après. Quelqu'un a mentionné de les tronquer, ce serait plus rapide.
La solution
La suppression des enregistrements d'une table enregistre chaque suppression et exécute des déclencheurs de suppression pour les enregistrements supprimés. Truncate est une commande plus puissante qui vide une table sans enregistrer chaque ligne. SQL Server vous empêche de tronquer une table avec des clés étrangères qui la référencent, car il est nécessaire de vérifier les clés étrangères sur chaque ligne.
Truncate est normalement ultra-rapide, idéal pour nettoyer les données d’une table temporaire. Cela préserve la structure de la table pour une utilisation future.
Si vous souhaitez réellement supprimer la définition de la table, ainsi que les données, supprimez simplement les tables.
Voir cet article MSDN pour plus d'informations.
Autres conseils
DROP TABLE supprime la table.
TRUNCATE TABLE le vide, mais laisse sa structure pour les données futures.
DROP et TRUNC font différentes choses:
TABLE TRUNCATE
Supprime toutes les lignes d'une table sans enregistrer les suppressions de lignes individuelles. TRUNCATE TABLE est similaire à la Instruction DELETE sans clause WHERE; Cependant, TRUNCATE TABLE est plus rapide et plus rapide. utilise moins de journal système et de transaction ressources.
DROP TABLE
Supprime une ou plusieurs définitions de table et toutes les données, index, déclencheurs, contraintes et permission spécifications pour ces tables.
En ce qui concerne la vitesse, la différence devrait être faible. Et de toute façon, si vous n'avez pas du tout besoin de la structure de la table, utilisez certainement DROP.
Je pense que vous entendez la différence entre DELETE TABLE et TRUNCATE TABLE.
DROP TABLE
supprimez la table de la base de données.
TABLE SUPPRIMER
sans condition, supprimez toutes les lignes. S'il existe des déclencheurs et des références, cela sera traité pour chaque ligne. De plus, un index sera modifié s'il y en a un.
TABLE TRUNCATE
définir le nombre de lignes zéro et sans enregistrer chaque ligne. C’est beaucoup plus rapide que les autres.
Aucune de ces réponses n'indique une différence importante entre ces deux opérations. La table de dépôt est une opération qui peut être annulée. Cependant, la troncature ne peut pas être annulée ['TRUNCATE TABLE' peut également être annulé]. De cette manière, la suppression d’une très grande table peut s’avérer très coûteuse s’il ya plusieurs lignes, car elles doivent toutes être enregistrées dans un espace temporaire au cas où vous décideriez de la restaurer.
Habituellement, si je souhaite supprimer une grande table, je la tronque, puis je la supprime. De cette façon, les données seront nixées sans enregistrement et la table pourra être supprimée. Cette suppression sera très économique car aucune donnée ne doit être enregistrée.
Il est important de souligner que troncature supprime simplement les données en laissant la table, tandis que drop supprime en fait les données et la table elle-même. (en supposant que les clés étrangères n'excluent pas une telle action)
TRUNCATE TABLE conserve l'intégralité de votre ancienne indexation. DROP TABLE supprimerait évidemment le tableau et vous demanderait de le recréer plus tard.
Table DROP
DROP TABLE [table_name];
La commande DROP permet de supprimer une table de la base de données. C'est une commande DDL. Toutes les lignes, les index et les privilèges de la table seront également supprimés. L’opération DROP ne peut pas être annulée.
Table DELETE
DELETE FROM [table_name]
WHERE [condition];
DELETE FROM [table_name];
La commande DELETE est une commande DML. Il peut être utilisé pour supprimer toutes les lignes ou certaines lignes de la table en fonction de la condition spécifiée dans la clause WHERE. Il est exécuté à l'aide d'un verrou de ligne, chaque ligne de la table est verrouillée pour la suppression. Il conserve le journal des transactions, il est donc plus lent que TRUNCATE. Les opérations DELETE peuvent être annulées.
Table TRUNCATE
TRUNCATE TABLE [table_name];
La commande TRUNCATE supprime toutes les lignes d'une table. Il n'enregistre pas la suppression de chaque ligne, mais la désallocation des pages de données de la table, ce qui la rend plus rapide que DELETE. Il est exécuté à l'aide d'un verrou de table et toute la table est verrouillée pour supprimer tous les enregistrements. C'est une commande DDL. Les opérations TRUNCATE ne peuvent pas être annulées.
Drop supprime complètement la table et supprime également la définition. Truncate vide la table mais ne supprime pas la définition.
Tronquer la table vide la table. La suppression de la table la supprime entièrement. L’un ou l’autre sera rapide, mais sa suppression le sera probablement plus rapidement (en fonction de votre moteur de base de données).
Si vous n'en avez plus besoin, déposez-le pour ne pas encombrer votre schéma.
DELETE TableA au lieu de TRUNCATE TableA? Une idée fausse commune est qu'ils font la même chose. ne pas alors. En fait, il existe de nombreuses différences entre les deux.
DELETE est une opération consignée par ligne. Ça signifie que la suppression de chaque ligne soit enregistrée et physiquement supprimée.
Vous pouvez supprimer toute ligne qui ne violera pas une contrainte tout en laissant la clé étrangère ou toute autre contrainte en place.
TRUNCATE est également une opération journalisée, mais d’une manière différente. TRUNCATE enregistre la désallocation des pages de données dans lesquelles les données existe. La désallocation des pages de données signifie que vos données les lignes existent toujours dans les pages de données, mais le les étendues ont été marquées comme vides pour être réutilisées. C'est quoi TRUNCATE est une opération plus rapide à effectuer sur SUPPRIMER.
Vous ne pouvez pas TRUNCATE une table qui a une clé étrangère contraintes. Vous devrez supprimer les contraintes, TRUNCATE la table, et réappliquez les contraintes.
TRUNCATE réinitialisera toutes les colonnes d’identité avec le germe par défaut valeur.
truncate supprime toutes les lignes, mais pas la table elle-même. Cela revient essentiellement à supprimer sans clause where, mais généralement plus rapidement.
J'ai une correction à apporter à l'une des affirmations ci-dessus ... "la troncature ne peut pas être annulée"
Truncate peut être annulé. Dans certains cas, vous ne pouvez pas créer de table tronquée ou supprimée, par exemple, lorsque vous avez une référence de clé étrangère. Pour une tâche telle que les rapports mensuels, je supprimerais probablement la table dès que je n'en aurais plus besoin. Si je faisais ce rapport de cumul plus souvent, je garderais probablement la table à la place et utiliserais tronquer.
J'espère que cela vous aidera, voici quelques informations supplémentaires que vous devriez trouver utiles ...
Veuillez consulter l'article suivant pour plus de détails: http://sqlblog.com/blogs/denis_gobo/archive/ 2007/06/13 / 1458.aspx
En outre, pour plus de détails sur la suppression / tronquage, consultez cet article: http://www.sql-server-performance.com/faq/delete_truncate_duncer_difference_p1. aspx
Merci! Jeff
TRUNCATE TABLE est fonctionnel identique à la déclaration DELETE sans Clause WHERE: les deux suppriment toutes les lignes de la table. Mais TRUNCATE TABLE est plus rapide et utilise moins de système et les ressources du journal des transactions que DELETE.
L'instruction DELETE supprime les lignes une à la fois et enregistre une entrée dans le journal des transactions pour chaque ligne supprimée. TRUNCATE TABLE supprime les données par désallocation des pages de données utilisées pour stocker les données de la table, et seulement le les désallocations de pages sont enregistrées dans le journal des transactions.
TRUNCATE TABLE supprime toutes les lignes d'un table, mais la structure de la table et son colonnes, contraintes, index, etc. sur rester. Le compteur utilisé par un identité pour les nouvelles lignes est réinitialisée à la graine pour la colonne. Si tu veux conserver le compteur d'identité, utiliser SUPPRIMER à la place. Si vous voulez enlever définition de la table et ses données, utilisez le Instruction DROP TABLE.
Vous ne pouvez pas utiliser TRUNCATE TABLE sur un table référencée par une clé étrangère contrainte; à la place, utilisez DELETE déclaration sans une clause WHERE. Parce que TRUNCATE TABLE n'est pas connecté, il ne peut pas activer de déclencheur.
TRUNCATE TABLE ne peut pas être utilisé sur tables participant à un indexé vue.
De http://msdn.microsoft.com /en-us/library/aa260621(SQL.80).aspx
Dans le standard SQL, la table DROP supprime la table et le schéma de table - TRUNCATE supprime toutes les lignes.
Les réponses ici correspondent à la question, mais je vais répondre à la question que vous n'avez pas posée. "Dois-je utiliser tronquer ou supprimer?" Si vous supprimez toutes les lignes d'une table, vous souhaiterez généralement les tronquer, car elles sont beaucoup plus rapides. Pourquoi est-ce beaucoup plus rapide? Au moins dans le cas d’Oracle, il réinitialise le la cote d'alerte supérieure . Il s’agit essentiellement de déréférencer les données et permet à la base de données de les réutiliser pour autre chose.
DELETE VS TRUNCATE
- L'instruction
DELETE
supprime les lignes une par une et enregistre une entrée dans la transaction. connectez-vous pour chaque ligne supprimée.TRUNCATE TABLE
supprime les données en les désallouant. pages utilisées pour stocker les données de la table et enregistre uniquement les désallocations de pages dans le répertoire. journal des transactions - Nous pouvons utiliser la clause
WHERE
dansDELETE
mais dansTRUNCATE
, vous ne pouvez pas l'utiliser - Lorsque l'instruction
DELETE
est exécutée à l'aide d'un verrou de ligne, chaque ligne du tableau est verrouillée. pour la suppression.TRUNCATE TABLE
verrouille toujours la table et la page, mais pas chaque ligne - Après l'exécution d'une instruction
DELETE
, la table peut toujours contenir des pages vides. Si le L’opération delete n’utilise pas de verrou de table, la table (tas) en contiendra beaucoup pages. Pour les index, l'opération de suppression peut laisser des pages vides, bien que celles-ci
les pages seront désallouées rapidement par un processus de nettoyage en arrière-plan -
TRUNCATE TABLE
supprime toutes les lignes d'une table, à l'exception de la structure de la table et de ses colonnes. les contraintes, les index, etc. restent
L'instruction -
DELETE
ne correspond pas à la colonneRESEED
, mais l'instructionTRUNCATE
RESEEDS
la ColonneIDENTITY
- Vous ne pouvez pas utiliser
TRUNCATE TABLE
sur les tables qui:- sont référencés par une contrainte
FOREIGN KEY
. (Vous pouvez tronquer une table qui a un clé étrangère qui fait référence à elle-même.) - Participer à une vue indexée.
- sont publiés à l'aide d'une réplication transactionnelle ou d'une réplication de fusion
- sont référencés par une contrainte
-
TRUNCATE TABLE
ne peut pas activer un déclencheur, car l'opération ne se connecte pas individuellement. suppressions de lignes
Déclaration de suppression
Supprimer une instruction supprimer des lignes de la table et renvoyer le nombre de lignes est supprimé de la table. Dans cette instruction, nous utilisons la clause where pour supprimer des données de la table
- L'instruction Delete est plus lente que l'instruction Truncate, car elle supprimait les enregistrements un par un
Instruction Truncate
Instruction Truncate Supprimé ou suppression de toutes les lignes de la table.
- Il est plus rapide que l'instruction de suppression car il a supprimé tous les enregistrements de la table
- L'instruction troncature ne renvoie pas le nombre de lignes supprimées de la table
Déclaration de suppression
L'instruction de suppression a supprimé tous les enregistrements ainsi que la structure de la table
SUPPRIMER
La commande DELETE est utilisée pour supprimer des lignes d'une table. Une clause WHERE peut être utilisée pour ne supprimer que certaines lignes. Si aucune condition WHERE n'est spécifiée, toutes les lignes seront supprimées. Après avoir effectué une opération DELETE, vous devez COMMIT ou ROLLBACK la transaction pour rendre la modification permanente ou l’annuler.
TRUNCATE
TRUNCATE supprime toutes les lignes d'une table. L’opération ne peut pas être annulée ... En tant que tel, TRUCATE est plus rapide et n’utilise pas autant d’espace annulé qu’un DELETE.
De: http://www.orafaq.com/faq/difference_berner_between_truncate_donne p>
Déposer déposer la table entière et toute sa structure
tronquer supprimer toutes les lignes de la table il est différent de delete qu'il supprime également les index de lignes