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

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

DDD
リリース: 2025-01-04 12:22:36
オリジナル
881 人が閲覧しました

How Can I Efficiently Update Records with SQL Server 2005's CASE Statement?

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

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