Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour efficacement les enregistrements avec l'instruction CASE de SQL Server 2005 ?

Comment puis-je mettre à jour efficacement les enregistrements avec l'instruction CASE de SQL Server 2005 ?

DDD
DDDoriginal
2025-01-04 12:22:36924parcourir

How Can I Efficiently Update Records with SQL Server 2005's CASE Statement?

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!

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