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 ?
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!