gpt4 book ai didi

mysql - CASE 对于 mysql 中的多个更新实际上有用吗?

转载 作者:行者123 更新时间:2023-11-29 01:09:07 24 4
gpt4 key购买 nike

似乎对多行使用 UPDATE 的唯一方法是 CASE as

UPDATE posts SET rates = CASE
WHEN post_id = '44' THEN rates + 'X'
WHEN post_id = '33' THEN rates + 'Y'
WHEN post_id = '73' THEN rates + 'Z'
WHEN post_id = '63' THEN rates + 'X'
...
ELSE rates END

考虑一个包含 100 万行的表。这需要循环超过 100 万条记录来更新,例如10 行。

如果我们对每个 UPDATE 使用单个 UPDATE 作为

UPDATE posts SET rates = rates + 'X' WHERE post_id='44'
UPDATE posts SET rates = rates + 'Y' WHERE post_id='33'
UPDATE posts SET rates = rates + 'Z' WHERE post_id='73'
UPDATE posts SET rates = rates + 'X' WHERE post_id='63'
...

我们将有 10 个查询,但我们不会遍历 999,990 行。

UPDATE 行数明显少于表中的总行数时,哪种方法最有效?

还有一个问题:当我们在CASE 中有ELSE rates END 时; mysql如何跳过这条记录?繁重的任务能比得上write吗?

最佳答案

与其询问哪个最有效,不如尝试使用可用的工具,例如 EXPLAINprofiling ?只需在您的更新中添加一个 where 子句 -

UPDATE posts SET rates = CASE post_id
WHEN 44 THEN rates + 'X'
WHEN 33 THEN rates + 'Y'
WHEN 73 THEN rates + 'Z'
WHEN 63 THEN rates + 'X'
...
END
WHERE post_id IN(44, 33, 73, 63...)

关于mysql - CASE 对于 mysql 中的多个更新实际上有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com