I have a mysql table with about 10 Million rows.
For each row, I have an id
column and date
column. The id
column is not unique, and for one id
there are multiple rows with different values for date
, typically 3-6 dates for each id
. I want to select the rows with the latest date
for their id
.
My query:
x
SELECT id,
date
FROM tab a
WHERE a.date = (SELECT MAX(date)
FROM tab b
WHERE a.id=b.id)
is very slow and takes minutes to complete. It feels this could be done much faster. What are the best practices here?
Advertisement
Answer
Why not just ?
SELECT id,
MAX(date) date
FROM tab
GROUP BY id;