Du vil have et sammensat indeks over (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
Grunden til dette er, at MySQL så kan hente den maksimale time
for hvert objectID
direkte fra indekstræet; den kan så også bruge det samme indeks til at slutte sig til tabellen igen for at finde gruppevist maksimum
poster ved hjælp af noget som din anden forespørgsel (men den ene skal slutte sig til begge objectID
og time
—Jeg kan godt lide at bruge en NATURAL JOIN
i tilfælde som dette):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t