Optimisation de la suppression par lots dans SQL Server 2008
Dans SQL Server, les opérations en masse telles que la copie en bloc (bcp) fournissent des techniques efficaces de manipulation des données. Cependant, la question se pose de savoir si une fonctionnalité de suppression groupée similaire est disponible.
Requête :
Existe-t-il une solution de suppression groupée dans SQL Server ?
TRUNCATE ne peut pas être utilisé pour une suppression sélective, ce qui nécessite des clauses WHERE. Existe-t-il une alternative à bcp pour supprimer des données en masse ?
Réponse :
Non, SQL Server ne propose pas d'opération de suppression en masse spécialisée. Cependant, il existe plusieurs approches pour optimiser les suppressions par lots :
Suppression par lots à l'aide de @@ROWCOUNT :
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
Cette requête exécute les instructions DELETE par lots de « xxx » lignes jusqu'à ce qu'il ne reste plus de lignes.
Tronquer et insérer Méthode :
SELECT col1, col2, ... INTO #Holdingtable FROM MyTable WHERE ..opposite condition.. TRUNCATE TABLE MyTable INSERT MyTable (col1, col2, ...) SELECT col1, col2, ... FROM #Holdingtable
Cette technique est efficace lorsqu'un pourcentage élevé de lignes doit être supprimé. Il crée une table temporaire avec les lignes à conserver, tronque la table d'origine et réinsère les lignes conservées dans la table.
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!