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