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. 您期望得到的结果?

大家有什么好的思路吗?

4. 您实际得到的结果?

AloneUtopia
讨论数量: 1

200很快把,想再快点把mysql log 关闭。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!