ホームページ > データベース > mysql チュートリアル > MySQL CASE WHEN Update が遅く、すべての行に影響を与えるのはなぜですか?

MySQL CASE WHEN Update が遅く、すべての行に影響を与えるのはなぜですか?

Susan Sarandon
リリース: 2024-11-25 11:21:11
オリジナル
937 人が閲覧しました

Why is My MySQL CASE WHEN Update Slow and Affecting All Rows?

CASE WHEN/THEN/ELSE を使用した MySQL 更新

問題:

を試みたときCASE WHEN/THEN/ELSE ステートメント、クエリを使用して大きな MyISAM テーブルを更新するCPU を独占し、完了するまでに非常に時間がかかります。さらに、クエリで指定されていない行も含め、テーブル内のすべての行が更新されます。

説明:

この動作の理由は、MySQL が CASE ステートメントを解釈するためです。テーブル内のすべての行を更新します。どの WHEN 条件にも一致しない行には NULL 値が割り当てられます。

解決策:

この問題を回避するには、ELSE を含むようにクエリを変更する必要があります。 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 CASE WHEN Update が遅く、すべての行に影響を与えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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