【发布时间】:2011-11-25 19:14:03
【问题描述】:
我正在寻找使用单个查询一次更新多行的最佳方法。 目前我有:
UPDATE `profiles` SET `name` = CASE `id` WHEN 1 THEN 'John' WHEN 2 THEN 'Jane' END, `gender` = CASE `id` WHEN 1 THEN 'Male' WHEN 2 THEN 'Female' END WHERE `id`=1 OR `id`=2
但这需要大约 4 分钟才能完成(我的实际查询是针对 2000 万行数据库中的 10 个字段),而单个更新查询大约需要 1 秒。
我正在尝试找出原因,实际发生了什么?我认为通过在 WHERE 子句中指定 id 可以加快速度。
【问题讨论】:
-
快速拍摄。我会为此准备 2 个不同的查询。即使您指定了
WHERE 'id'=1 OR 'id'=2,使用CASE方法也会强制mysql 收集您的所有ID。如果您直接使用唯一的id为每个案例准备一个查询,您将拥有最快的方法来执行此操作。通过使用 2 个语句,您还可以获得更清晰的查询,因为这种CASE方法使查询有点奇怪......; )