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