Utilisation d'une clause WHERE pour optimiser les mises à jour de l'instruction CASE dans SQL Server 2005
Dans SQL Server 2005, l'instruction CASE peut être utilisée pour mettre à jour enregistrements basés sur des conditions spécifiées. Bien que l'utilisation de la clause ELSE puisse gérer les lignes non affectées, elle peut entraîner des analyses inutiles de la table entière. Ce problème peut être résolu en utilisant une clause WHERE.
Considérez l'instruction 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 instruction mettra à jour les enregistrements dans la table 'dbo.TestStudents', en modifiant les valeurs 'LASTNAME' comme selon les conditions spécifiées. Cependant, la clause ELSE évaluera chaque enregistrement de la table, même ceux qui ne sont pas affectés par les conditions.
Pour optimiser cette instruction, une clause WHERE peut être incorporée pour filtrer les enregistrements qui doivent être mis à 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 ajoutant la clause WHERE, l'instruction évalue uniquement les enregistrements dont la valeur « LASTNAME » est « AAA », « CCC » ou « EEE ». Cela améliore les performances et évite les analyses inutiles des lignes non affectées. Par conséquent, l'incorporation d'une clause WHERE est une technique recommandée pour optimiser les mises à jour des instructions CASE dans SQL Server 2005.
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!