Bulk DELETE sur SQL Server 2008 (Existe-t-il quelque chose comme Bulk Copy (bcp) pour supprimer des données?)
Est-il une solution pour supprimer en vrac dans SQL Server?
Je ne peux pas utiliser TRUNCATE parce que je veux utiliser pour limiter les lignes d'action.
Est-il quelque chose comme la Copie en bloc (bcp) pour supprimer les données?
source d'informationauteur masoud ramezani | 2010-01-24
Vous devez vous connecter pour publier un commentaire.
Pas.
Vous souhaitez SUPPRIMER avec une clause where: c'est le standard SQL.
Ce que vous pouvez faire est de lot supprime comme ceci:
Ou si vous souhaitez supprimer un pourcentage très élevé de lignes...
Vous pouvez faire quelques choses si vous voulez supprimer une partie de votre table et de ne pas
TRUNCATE
.vous pouvez sélectionner une partie de la table dans une nouvelle table, puis passer les deux, comme ceci:
Deuxièmement, si vous êtes en utilisant le Partitionnement, vous pouvez créer une identique (vide) table sur le même schéma de partition.. et si la table est partitionnée en fonction de votre archivage /purge de la logique, vous pouvez déplacer un bloc de partition à partir de votre tableau principal de la nouvelle table, puis tronquer la nouvelle table.. Par exemple:
Ps.
Les Partitions sont disponibles dans SQL 2005/08 Ent.
Espérons que cette aide!
Sychare Jedko,
L'avantage de TRONQUER est d'éviter la journalisation de tous les supprimer dans le fichier journal. un TRUNCATE va créer une entrée unique (en log) pour l'ensemble du lot.
Viens de tomber sur un problème similaire de travail sur une table intermédiaire qui a eu des problèmes de mise à l'échelle avec une bonne serrures.
Depuis le tableau n'est référencé dans un seul endroit pour nous, nous avons simplement remplacé celui de référence avec une requête pour la dynamique du nom de la table, qui est créé avec une "sélectionnez dans" semblable à ce gbn suggéré.
C'est facile à gérer, car la mise en scène de la table n'est référencé dans un endroit dans le code, et les dépenses de la base de données supplémentaire d'appel avec la création de la table est justifiée dans un entrepôt contexte. Si vous avez seulement quelques centaines de dossiers ou de référence, la table dans votre code à de nombreuses reprises, alors cette approche peut ne pas fonctionner.
Lors de la manipulation des millions de lignes je préfère avoir un OÙ l'instruction et à l'aide de SELECT DANS une copie, tableau, supprimer la table d'origine et renommez la copie (nom d'origine).
Bien, vous devriez avoir des trucs comme (FK)clés, contraintes, etc à l'esprit. Mais en utilisant cette méthode, vous évitez les badazz-taille du journal, et vous éviter un temps considérable de la consommation de la suppression de dans les morceaux.
/Snedker
cochez cette