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

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

Susan Sarandon
リリース: 2024-12-27 20:16:10
オリジナル
433 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート