Is there a more efficient way of doing the following?
select * from foo as a where a.id = (select max(id) from foo where uid = a.uid group by uid)
Try this query -
SELECT t1.* FROM foo t1 JOIN (SELECT uid, MAX(id) id FROM foo GROUP BY uid) t2 ON t1.id = t2.id AND t1.uid = t2.uid;
Then use EXPLAIN to analyze queries.
SELECT t1.* FROM foo t1 LEFT JOIN foo t2 ON t1.id < t2.id AND t1.uid = t2.uid WHERE t2.id is NULL;