為什麼我的 MySQL MyISAM UPDATE CASE WHEN 失敗以及如何修復它?

Patricia Arquette
發布: 2024-11-27 18:01:11
原創
652 人瀏覽過

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

使用CASE WHEN/THEN/ELSE 更新MySQL MyISAM 表

問:當嘗試使用CASE WHENMyENISA/ELSE 更新大型大型中特定行時的CASE 語句中,查詢會消耗過多的CPU並更新所有行,包括未指定的行。如何限制預期行的更新?

答:當 CASE 語句不包含 ELSE 子句時,就會出現此問題。預設情況下,CASE 語句中未明確提及的行會被指派 NULL 值。這會導致整個表出現不必要的更新。

要解決此問題,請將 ELSE 子句附加到 CASE 語句,並將 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板