1

我有一张这样的桌子

|customer_reference|date_and_time|
       111          2013-01-01
       111          2013-01-02
       111          2013-01-03
       222          2013-01-01
       222          2013-01-02
       333          2013-01-01

我想根据 customer_reference 获得最后一个 date_and_time 的行。我写了一些查询,但速度很慢。我的查询是这样的。

SELECT MAX(date_and_time) AS time
FROM t_table GROUP BY customer_reference

我在该表中有超过 600.000 行。

4

3 回答 3

2

只需在列上添加索引customer_reference并执行下面的查询

SELECT customer_reference, MAX(date_and_time) AS time
FROM t_table 
GROUP BY customer_reference
于 2013-01-09T08:07:07.153 回答
1

如果向表中添加索引会更好

    ALTER TABLE `t_table` ADD INDEX `customer_reference` (`customer_reference`)

然后运行您的查询

于 2013-01-09T08:10:37.977 回答
1

索引是您可以在 MySQL 表上启用以提高性能的功能。

您必须在列上创建索引,customer_reference 通过 MySQL 中的列索引最大化查询性能

如果我们在创建时没有定义索引,我们可以稍后添加一个,使用以下语法:

CREATE INDEX id_index ON t_table(customer_reference);
于 2013-01-09T08:14:49.220 回答