我可以帮助您翻译。这段文本是关于一个包含约2百万行的表格的。该表格有一个基于B-tree的主键,由(id,round)组成,并且还有其他两个(似乎不相关的)索引。
我的问题是:
上述查询需要大约30秒才能运行,但为什么下面的查询会更快?
似乎运行需要很长时间?我等了几个小时。我改变的唯一一件事是min->max。
PS:这是创建表格的代码。
我的问题是:
insert into a1
select * from cars
where (id, round) in (select id, min(round) from cars group by id)
上述查询需要大约30秒才能运行,但为什么下面的查询会更快?
insert into a1
select * from cars
where (id, round) in (select id, max(round) from cars group by id)
似乎运行需要很长时间?我等了几个小时。我改变的唯一一件事是min->max。
PS:这是创建表格的代码。
CREATE TABLE `cars` (
`id` int(11) NOT NULL,
`make` varchar(128) NOT NULL,
`miles` varchar(128) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`round` int(11) NOT NULL,
`location` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`,`round`),
KEY `time` (`time`),
KEY `make` (`make`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
round
进行分组,而不是id
?你知道在这种情况下id
是任意的吗? - OMG Ponies20轮。所以是的,有多行具有相同的id但不同的轮次(20)。@迈克·珀塞尔 - Tao SongSELECT id, make, miles, time, max(round) as max_round, location FROM cars GROUP BY id
。 - Mike Purcell