【发布时间】:2017-12-23 04:08:49
【问题描述】:
我有一个像这样包含 user_id、时间、inHour 和 outHour 的表
我想与 user_id 分组并获得相关字段的最大时间。在下图中,您可以看到我想要的结果。
我的查询运行良好。但我想提高速度,因为它对大数据的运行速度很慢。这是我的查询:
SELECT
foo.user_id,
foo.time,
foo.inHour,
foo.outHour
FROM
(
SELECT
MAX(time) AS time,
user_id
FROM
foo
GROUP BY user_id
) AS t1
INNER JOIN foo ON (t1.user_id = foo.user_id AND t1.time = foo.time);
我需要大幅减少查询时间。非常感谢任何帮助。
【问题讨论】:
-
你的表是如何索引的?
-
您是否在两个表中都为 user_id/time 创建了索引?
-
只有一张桌子@Roy
-
用每个用户的最大时间制作一个临时表(并在两个表中创建索引)
-
@Roy - 制作临时表只会让它变慢(在这种情况下)。
标签: mysql performance greatest-n-per-group