最佳答案
我正在尝试使用 CLI 脚本更新一个大型 MyISAM 表(2500万条记录)。该表没有被其他任何东西锁定/使用。
我认为与其对每个记录执行单个 UPDATE 查询,还不如利用 CASE 特性。
id字段是 PRIMARY。
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
你瞧,查询占用了 CPU,而且不会永远完成。
然后,令我惊讶的是,我发现查询正在更新所有2500万行,在没有指定的行上放置 NULL。
这样做的目的是什么?我是否可以只对特定行进行 MASS 更新,而不必每次执行此查询时更新2500万行?或者我必须单独更新然后提交?