Maison >base de données >tutoriel mysql >Existe-t-il une alternative plus rapide aux instructions DELETE standard pour la suppression groupée dans SQL Server 2008 ?

Existe-t-il une alternative plus rapide aux instructions DELETE standard pour la suppression groupée dans SQL Server 2008 ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-03 10:29:43777parcourir

Is There a Faster Alternative to Standard DELETE Statements for Bulk Deletion in SQL Server 2008?

SUPPRESSION groupée efficace dans SQL Server 2008

Dans la gestion de bases de données, le besoin d'une suppression efficace des données se pose fréquemment. Bien que SQL Server fournisse des instructions DELETE standard, elles peuvent prendre beaucoup de temps pour les grands ensembles de données. Cette question explore si SQL Server offre une alternative à Bulk Copy (bcp) pour les opérations DELETE en bloc.

Impossible d'utiliser TRUNCATE, utilisez WHERE à la place

La requête présentée demande s'il existe une solution pour la suppression en bloc dans SQL Server. Le problème est que la suppression doit être limitée par une clause WHERE, ce qui fait de TRUNCATE une option inappropriée.

Aucun équivalent de copie en bloc pour DELETE

Malheureusement, il n'y a pas d'équivalent de copie en bloc pour DELETE. copie équivalente pour les opérations DELETE dans SQL Server. Les instructions DELETE avec des clauses WHERE doivent être exécutées en tant que requêtes SQL standard.

Deletes par lots pour l'évolutivité

Pour les ensembles de données volumineux, envisagez des opérations DELETE par lots. Celles-ci impliquent de diviser l'instruction DELETE en lots plus petits, comme indiqué ci-dessous :

SELECT 'Starting' --sets @@ROWCOUNT
WHILE @@ROWCOUNT <> 0
    DELETE TOP (xxx) MyTable WHERE ...

Méthode alternative pour les suppressions à pourcentage élevé

Lors de la suppression d'une grande majorité de lignes, une méthode alternative pourrait être plus efficace :

SELECT col1, col2, ... INTO #Holdingtable
           FROM MyTable WHERE ..opposite condition..
TRUNCATE TABLE MyTable
INSERT MyTable (col1, col2, ...)
           SELECT col1, col2, ... FROM #Holdingtable

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn