為什麼我的 MySQL CASE WHEN 更新緩慢並影響所有行?

Susan Sarandon
發布: 2024-11-25 11:21:11
原創
871 人瀏覽過

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

MySQL 更新使用CASE WHEN/THEN/ELSE

問題:

問題:

問題:

問題:

。 CASE WHEN/THEN/ELSE 語句更新大型MyISAM表,查詢獨佔CPU並需要過多的時間才能完成。此外,它會更新表中的所有行,甚至是查詢中未指定的行。

解釋:
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 條件的行將被指派 NULL 值。 解決方案:要避免此問題,應修改查詢以包含 ELSE將現有值分配給與任何 WHEN 條件都不匹配的行的語句。此外,也可以使用 WHERE 子句將更新限制為僅指定的行。 更正後的查詢:

以上是為什麼我的 MySQL CASE WHEN 更新緩慢並影響所有行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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