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.

Était-ce utile?

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

  1. 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
  2. Nous pouvons utiliser la clause WHERE dans DELETE mais dans TRUNCATE , vous ne pouvez pas l'utiliser
  3. 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
  4. 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
  5. 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
  6. L'instruction
  7. DELETE ne correspond pas à la colonne RESEED , mais l'instruction TRUNCATE RESEEDS la Colonne IDENTITY
  8. Vous ne pouvez pas utiliser TRUNCATE TABLE sur les tables qui:
    1. 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.)
    2. Participer à une vue indexée.
    3. sont publiés à l'aide d'une réplication transactionnelle ou d'une réplication de fusion
  9. 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

scroll top