Mysql 多张大表中的部分数据需要update, 有什么好的思路吗?
1. 运行环境
1). 当前使用的 Laravel 版本?
yii 2
2). 当前使用的 php/php-fpm 版本?
PHP 版本:7.3
php-fpm 版本:7.3
3). 当前系统
CentOS 8
4). 业务环境
生产环境
5). 相关软件版本
mysql版本:5.7
2. 问题描述?
分表大概有200+;
各表中数据多数为10w+,个别有100~200 w;
表无自增id;
表结构示意:
CREATE TABLE `subscribe_x` (
`s` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`ukey` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`o_at` datetime DEFAULT NULL,
`c_at` datetime DEFAULT NULL,
PRIMARY KEY (`s`,`ukey`) USING BTREE,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
update需求:
update `subscribe_x` set `o_at` = `c_at` where `o_at` < `c_at` or `o_at` is null;
3. 您期望得到的结果?
大家有什么好的思路吗?
200很快把,想再快点把mysql log 关闭。