Maison > base de données > tutoriel mysql > Comment optimiser les mises à jour des instructions CASE dans SQL Server 2005 pour éviter les analyses de tables complètes ?

Comment optimiser les mises à jour des instructions CASE dans SQL Server 2005 pour éviter les analyses de tables complètes ?

Barbara Streisand
Libérer: 2024-12-26 02:59:08
original
972 Les gens l'ont consulté

How to Optimize CASE Statement Updates in SQL Server 2005 to Avoid Full Table Scans?

Optimisation de la mise à jour de l'instruction CASE dans SQL Server 2005

Question originale :

Comment mettre à jour de manière sélective les enregistrements à l'aide d'une instruction CASE dans SQL Server 2005 sans analyser tout cela n'est pas affecté lignes ?

Contexte :

L'instruction CASE suivante est utilisée pour mettre à jour des valeurs spécifiques dans la colonne LASTNAME de la table dbo.TestStudents :

UPDATE dbo.TestStudents SET LASTNAME = 
( CASE 
WHEN (LASTNAME = 'AAA') THEN 'BBB' 
WHEN (LASTNAME = 'CCC') THEN 'DDD' 
WHEN (LASTNAME = 'EEE') THEN 'FFF' 
ELSE (LASTNAME)
END )
Copier après la connexion

Bien que cette instruction atteigne l'objectif souhaité, la condition ELSE nécessite d'analyser toutes les lignes du table.

Solution :

Pour éviter d'analyser les lignes non affectées, une clause WHERE peut être ajoutée à l'instruction pour spécifier quelles lignes 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')
Copier après la connexion

En spécifiant les valeurs LASTNAME à mettre à jour dans la clause WHERE, l'instruction met à jour uniquement les lignes concernées et laisse les autres lignes inchangé.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal