U wilt een samengestelde index over (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
De reden hiervoor is dat MySQL dan de maximale time
kan ophalen voor elke objectID
rechtstreeks uit de indexboom; het kan dan ook dezelfde index gebruiken om opnieuw samen te voegen met de tabel om de maximaal groepsgewijs
records met behulp van zoiets als uw tweede zoekopdracht (maar men moet deelnemen aan beide objectID
en time
—Ik gebruik graag een NATURAL JOIN
in gevallen als deze):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t