ホームページ >データベース >mysql チュートリアル >MySQL MyISAM UPDATE が CASE WHEN で失敗するのはなぜですか? どうすれば修正できますか?

MySQL MyISAM UPDATE が CASE WHEN で失敗するのはなぜですか? どうすれば修正できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 18:01:11711ブラウズ

Why Does My MySQL MyISAM UPDATE with CASE WHEN Fail and How Can I Fix It?

CASE WHEN/THEN/ELSE を使用した MySQL MyISAM テーブルの更新

Q: を使用して大規模な MyISAM テーブルの特定の行を更新しようとすると、 CASE ステートメントを使用すると、クエリは CPU を過剰に消費し、指定されていない行を含むすべての行を更新します。更新を意図した行に制限するにはどうすればよいですか?

A: この問題は、CASE ステートメントに ELSE 句が含まれていない場合に発生します。デフォルトでは、CASE ステートメントで明示的に指定されていない行には NULL 値が割り当てられます。これにより、テーブル全体で不必要な更新が行われます。

これを解決するには、CASE ステートメントに ELSE 句を追加し、uid 列の既存の値を割り当てます。これにより、更新が WHEN 句で指定されていない行に影響を与えることがなくなります。

さらに、WHERE 句を含めて、更新する必要がある行を明示的に指定します。これにより、必要な行のみが確実にターゲットとなります。

例:

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)

以上がMySQL MyISAM UPDATE が CASE WHEN で失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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