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中文網其他相關文章!