ホームページ >データベース >mysql チュートリアル >SQL Server 2005 で CASE ステートメントを使用してレコードを効率的に更新するにはどうすればよいですか?

SQL Server 2005 で CASE ステートメントを使用してレコードを効率的に更新するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 20:16:10434ブラウズ

How Can I Efficiently Update Records with a CASE Statement in SQL Server 2005?

SQL Server 2005 の更新で CASE ステートメントを使用する方法

CASE ステートメントは、指定された条件に基づいてレコードを更新するための簡潔な方法を提供します。ただし、CASE ステートメントを使用するとき、特に大きなテーブルを扱うときは、効率を考慮することが重要です。

問題:

次の SQL ステートメントは、TestStudents テーブル内のレコードを更新します。 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 )

このステートメントは目的の結果を達成しますが、スキャンは最後まで行われます。テーブル内のすべてのレコード (影響を受けないレコードも含む)。

解決策:

パフォーマンスを向上させ、データの整合性を維持するために、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 句は、最後の行がどこにあるかのみを記録することを指定します。 'AAA'、'CCC'、または 'EEE' に等しい名前をアップデートに含める必要があります。これにより、影響を受けない行は変更されないことが保証され、テーブルに対する不必要な操作が削減されます。

CASE ステートメントと適切に定義された WHERE 句を組み合わせることで、データの整合性を維持しながら SQL データベース内の特定のレコードを効率的に更新できます。

以上がSQL Server 2005 で CASE ステートメントを使用してレコードを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。