子查询很慢

cru*_*dom 3 mysql sql

我有一个大约有1000万行的mysql表。对于每一行,我都有一个id列和一个date列。该id列不是唯一的,对于一个id列,有多行具有不同的值date,通常每行3-6个日期id。我想选择与最新的行date为他们id

我的查询:

SELECT   id,
         date
FROM     tab a
WHERE    a.date = (SELECT MAX(date)
                   FROM   tab b
                   WHERE  a.id=b.id)
Run Code Online (Sandbox Code Playgroud)

非常慢,需要几分钟才能完成。感觉这可以更快地完成。这里的最佳做法是什么?

Dan*_*anB 5

为什么不只是呢?

SELECT   id,
         MAX(date) date
FROM     tab
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)