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