UPDATE kt_accbalance
SET accbalance_ep = CASE user_id
WHEN 10001 THEN
accbalance_ep + 8
WHEN 10002 THEN
accbalance_ep + 5
WHEN 10004 THEN
accbalance_ep + 3
WHEN 10006 THEN
accbalance_ep + 10
WHEN 10039 THEN
accbalance_ep + 100
END
WHERE
user_id IN ( 10001, 10002, 10004, 10006, 10039 )
这是批量更新5条。如果批量更新2000条,意思就是有2000个user_id要更新。2000个这种长度恐怖啊。mysql能处理这么长的吗?2000条,sql语句是现在长度的400倍。mysql行吗,允许sql能整这么长吗?如果不可以,有没有其他替代的高性能方案呢。
参考了这个文章:参考
mysql默认语句最大长度是1m,2000条问题不大。但是你可以选择用熟悉的语言来拼sql语句,从文件读userid,这样支持更多的userid,效率更高