如何在SQL Server 2005 中使用CASE 高效更新記錄
在SQL Server 2005 中,CASE 語句提供了一種執行條件的通用方法更新。但是,在處理包含大量記錄的表時,明智地使用它以避免效能瓶頸至關重要。
考慮以下查詢:
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END )
此查詢成功更新了指定的根據給定的條件進行記錄。但是,它使用 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 子句中更新,則查詢僅掃描與這些條件相符的行。這顯著提高了效能並確保未受影響的行保持不變。
以上是如何利用SQL Server 2005的CASE語句有效率地更新記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!