MySQL 批量更新是指在一次操作中更新多条记录,而不是逐条更新。这可以显著提高数据库操作的效率,特别是在处理大量数据时。
UPDATE
语句:通过 CASE
语句或 JOIN
操作来实现批量更新。JOIN
操作进行批量更新。以下是一个使用 UPDATE
语句和 CASE
语句进行批量更新的示例:
UPDATE users
SET status = CASE id
WHEN 1 THEN 'active'
WHEN 2 THEN 'inactive'
WHEN 3 THEN 'pending'
-- 添加更多需要更新的记录
END
WHERE id IN (1, 2, 3); -- 指定需要更新的记录ID
原因:
解决方法:
FOR UPDATE
子句时,尽量减少锁定的范围和时间。DELIMITER //
CREATE PROCEDURE BatchUpdateUsers()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE userId INT;
DECLARE userStatus VARCHAR(20);
DECLARE cur CURSOR FOR SELECT id, status FROM temp_users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO userId, userStatus;
IF done THEN
LEAVE read_loop;
END IF;
UPDATE users
SET status = userStatus
WHERE id = userId;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
CALL BatchUpdateUsers();
领取专属 10元无门槛券
手把手带您无忧上云