Heim >Datenbank >MySQL-Tutorial >Wie optimiert man CASE-Anweisungsaktualisierungen in SQL Server 2005, um vollständige Tabellenscans zu vermeiden?
Ursprüngliche Frage:
So aktualisieren Sie Datensätze selektiv mithilfe einer CASE-Anweisung in SQL Server 2005 ohne Scannen, alles davon nicht betroffen Zeilen?
Kontext:
Die folgende CASE-Anweisung wird verwendet, um bestimmte Werte in der Spalte LASTNAME der Tabelle dbo.TestStudents zu aktualisieren:
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END )
Während diese Anweisung den gewünschten Zweck erfüllt, erfordert die ELSE-Bedingung das Scannen aller Zeilen in Tabelle.
Lösung:
Um das Scannen nicht betroffener Zeilen zu vermeiden, kann der Anweisung eine WHERE-Klausel hinzugefügt werden, um anzugeben, welche Zeilen aktualisiert werden sollen.
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')
Durch die Angabe der LASTNAME-Werte, die in der WHERE-Klausel aktualisiert werden sollen, aktualisiert die Anweisung nur die betroffenen Zeilen und lässt andere Zeilen übrig unverändert.
Das obige ist der detaillierte Inhalt vonWie optimiert man CASE-Anweisungsaktualisierungen in SQL Server 2005, um vollständige Tabellenscans zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!