在SQL Server 2005 中利用WHERE 子句優化CASE 語句更新
在SQL Server 2005 中,可以使用CASE 語句來更新指定條件進行記錄。雖然使用 ELSE 子句可以處理不受影響的行,但它可能會導致對整個表進行不必要的掃描。這可以透過使用 WHERE 子句來解決。
考慮以下語句:
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END )
此語句將更新「dbo.TestStudents」表中的記錄,將「LASTNAME」值變更為根據指定的條件。但是,ELSE 子句將評估表中的每筆記錄,即使是那些不受條件影響的記錄。
為了最佳化此語句,可以合併WHERE 子句來過濾應更新的記錄:
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')
透過新增WHERE 子句,該語句只計算'LASTNAME' 值為'AAA' 、'CCC' 或'EEE' 的記錄。這可以提高效能並避免對未受影響的行進行不必要的掃描。因此,合併 WHERE 子句是最佳化 SQL Server 2005 中 CASE 語句更新的建議技術。
以上是WHERE 子句如何最佳化 SQL Server 2005 中的 CASE 語句更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!