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

SQL Server 2005 で WHERE 句を使用して CASE ステートメントの更新を最適化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 09:27:11246ブラウズ

How Can a WHERE Clause Optimize CASE Statement Updates in SQL Server 2005?

SQL Server 2005 での CASE ステートメントの更新を最適化するための WHERE 句の利用

SQL Server 2005 では、CASE ステートメントを使用して更新を行うことができます。指定した条件に基づいて記録します。 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 )

このステートメントは、'dbo.TestStudents' テーブル内のレコードを更新し、'LASTNAME' の値を次のように変更します。指定された条件に従って。ただし、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 句を追加すると、ステートメントは「LASTNAME」値が「AAA」、「CCC」、または「CCC」であるレコードのみを評価します。 「ええ」。これによりパフォーマンスが向上し、影響を受けない行の不必要なスキャンが回避されます。したがって、SQL Server 2005 で CASE ステートメントの更新を最適化するには、WHERE 句を組み込むことをお勧めします。

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

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