パフォーマンスと選択的な行変更のために MySQL CASE WHEN/THEN/ELSE 更新を最適化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-27 00:11:14
オリジナル
217 人が閲覧しました

How Can I Optimize MySQL CASE WHEN/THEN/ELSE Updates for Performance and Selective Row Modification?

CASE WHEN/THEN/ELSE を使用した MySQL 更新: パフォーマンスの問題と選択的な更新の克服

大規模なテーブルを操作する場合、更新クエリの最適化は次のようになります。パフォーマンスを確保するために重要です。 MySQL CASE 機能は、条件付き更新のための強力なメカニズムを提供しますが、これを誤って使用すると、予期せぬ結果を招く可能性があります。

問題文で説明されているように、一般的な問題の 1 つは、テーブル内のすべての行が意図せず更新されることです。特定のもの。これは CASE のデフォルトの動作によるものです。ELSE 句が指定されていない場合、WHEN 条件に一致しないすべての行は NULL に更新されます。これは、不要な更新をトリガーし、システム リソースに負担をかけるため、大きなテーブルでは問題となる可能性があります。

この問題を回避するには、開発者は、WHEN 条件でカバーされない行のデフォルトの動作を指定する ELSE 句を明示的に含める必要があります。たとえば、提供された例では、ELSE uid 句を追加すると、指定された ID のいずれにも一致しないすべての行が既存の uid 値を保持するようになります。

UPDATE `table` SET `uid` = CASE
    WHEN id = 1 THEN 2952
    WHEN id = 2 THEN 4925
    WHEN id = 3 THEN 1592
    ELSE `uid`
    END
WHERE id  in (1,2,3)
ログイン後にコピー

WHERE 句を特定の値に制限することで、 ID が更新されると、この改訂されたクエリにより、必要な行のみが影響を受けるようになります。このアプローチにより、過剰な更新が回避され、データの整合性を維持しながらパフォーマンスのオーバーヘッドが最小限に抑えられます。

以上がパフォーマンスと選択的な行変更のために MySQL CASE WHEN/THEN/ELSE 更新を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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