Du vill ha ett sammansatt index över (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
Anledningen till detta är att MySQL då kan hämta den maximala time
för varje objectID
direkt från indexträdet; den kan sedan också använda samma index för att gå med i tabellen igen för att hitta gruppvis maximalt
poster med något liknande din andra fråga (men en bör gå med på båda objectID
och time
—Jag gillar att använda en NATURAL JOIN
i sådana här fall):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t