如何加快此SELECT查询?

时间:2017-07-18 10:33:33

标签: mysql performance greatest-n-per-group

我有一个包含user_id,time,inHour和outHour的表格

enter image description here

我想与user_id分组,并获得相关字段的最长时间。在下面的图片中,您可以看到我想要的结果。

enter image description here

我的查询效果很好。但我想提高速度,因为它对大数据来说效果很慢。这是我的疑问:

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);

我需要大幅缩短查询时间。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

GroupWise的-MAX?

您需要一个复合索引。您现有的查询将受益于

INDEX(user, time)  -- in this order!

我的博客提供了更快的技术:http://mysql.rjweb.org/doc.php/groupwise_max