Comment mettre à jour efficacement les enregistrements à l'aide de CASE dans SQL Server 2005
Dans SQL Server 2005, l'instruction CASE offre un moyen polyvalent d'effectuer des mises à jour. Cependant, lorsqu'il s'agit de tables contenant un grand nombre d'enregistrements, il est crucial de l'utiliser judicieusement pour éviter les goulots d'étranglement en termes de performances.
Considérez la requête suivante :
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END )
Cette requête met à jour avec succès le spécifié enregistrements en fonction des conditions données. Cependant, il utilise une condition ELSE qui analyse chaque ligne du tableau, même celles qui n'ont pas besoin d'être mises à jour. Cela peut avoir un impact significatif sur les performances dans les grandes tables.
Pour optimiser la requête, vous pouvez ajouter une clause WHERE pour filtrer les lignes qui doivent être mises à jour :
UPDATE dbo.TestStudents SET LASTNAME = CASE WHEN LASTNAME = 'AAA' THEN 'BBB' WHEN LASTNAME = 'CCC' THEN 'DDD' WHEN LASTNAME = 'EEE' THEN 'FFF' ELSE LASTNAME END WHERE LASTNAME IN ('AAA', 'CCC', 'EEE')
En spécifiant les valeurs spécifiques qui doivent être mis à jour dans la clause WHERE, la requête analyse uniquement les lignes qui correspondent à ces critères. Cela améliore considérablement les performances et garantit que les lignes non affectées restent inchangées.
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!