我有一个包含user_id,time,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);
我需要大幅缩短查询时间。非常感谢任何帮助。
答案 0 :(得分:0)
GroupWise的-MAX?
您需要一个复合索引。您现有的查询将受益于
INDEX(user, time) -- in this order!
我的博客提供了更快的技术:http://mysql.rjweb.org/doc.php/groupwise_max