为什么我的 MySQL CASE WHEN 更新缓慢并影响所有行?

Susan Sarandon
发布: 2024-11-25 11:21:11
原创
871 人浏览过

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 更新缓慢并影响所有行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板