表A中有4列,id、name、create_time和content。
create table A
(
id int primary key,
name varchar(20),
create_time datetime,
content varchar(4000)
);
create table B like A;
我想在同一个name
中选择最大create_time
条记录,并插入到另一个表B
中。
执行sql如下,但是时间消耗 Not Acceptable 。
insert into B
select A.*
from A,
(select name, max(create_time) create_time from B group by name) tmp
where A.name = tmp.name
and A.create_time = tmp.create_time;
一张表有1000W行,10GB,执行sql花费200s。
有什么方法可以更快地完成这项工作,或者更改 MySQL Server 中的哪些参数以加快运行速度。
p: 表 A 可以是任何类型、分区表或其他类型。
最佳答案
首先确保 A (name, create_time) 和 B (name, create_time) 上有正确的索引 然后尝试使用显式连接和条件
insert into B
select A.*
from A
inner join (
select name, max(create_time) create_time
from B
group by name) tmp on ( A.name = tmp.name and A.create_time = tmp.create_time)
关于MySQL从每个组中选择最大记录并插入到另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409823/