I've seen some similar types of questions, however, I have not been able to find a best solution. i need this query optimized.
itemid state_id timestamp
======================================================
1 1 2012-08-11 00:00:00
1 2 2012-08-12 00:00:00
1 3 2012-08-13 00:00:00
2 1 2012-08-10 00:00:00
2 2 2012-08-13 00:00:00 <=== lastest state_id =2
3 1 2012-08-10 00:00:00
3 2 2012-08-13 00:00:00
3 4 2012-08-15 00:00:00
4 1 2012-08-10 00:00:00
4 3 2012-08-13 00:00:00
4 2 2012-08-16 00:00:00 <=== lastest state_id =2
5 1 2012-08-16 00:00:00
I need to select itemid based on the latest timestamp and state_id = 2.
I have this query http://sqlfiddle.com/#!2/a3d41/1/0 but i think it is not optimized for large table, Any ideas? Thanks!
SELECT *
FROM hops h
WHERE h.timestamp = (
SELECT MAX( h2.`timestamp` )
FROM hops h2
WHERE h.`itemid` = h2.`itemid` )
AND h.state_id = 2