在mysql中更快的组?

时间:2013-01-09 08:03:05

标签: mysql sql database

我有一张这样的表

|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行。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果向表中添加索引

,效果会更好
    ALTER TABLE `t_table` ADD INDEX `customer_reference` (`customer_reference`)

然后运行您的查询

答案 2 :(得分:1)

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

您必须在列customer_reference Maximizing Query Performance through Column Indexing in MySQL

上创建索引

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

CREATE INDEX id_index ON t_table(customer_reference);