Vous voulez un index composite sur (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
La raison en est que MySQL peut alors récupérer le maximum de time
pour chaque objectID
directement à partir de l'arborescence d'index ; il peut alors également utiliser le même index en se joignant à nouveau à la table pour trouver le maximum par groupe
enregistre en utilisant quelque chose comme votre deuxième requête (mais on devrait joindre à la fois objectID
et time
—J'aime utiliser une NATURAL JOIN
dans des cas comme celui-ci):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t