我有一张这样的表
|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行。
答案 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);