Vuoi un indice composito su (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
La ragione di ciò è che MySQL può quindi recuperare il massimo time
per ogni objectID
direttamente dall'albero dell'indice; può quindi anche utilizzare lo stesso indice per unirsi nuovamente alla tabella per trovare il massimo per gruppo
record utilizzando qualcosa come la tua seconda query (ma uno dovrebbe unirsi su entrambi objectID
e time
—Mi piace usare un NATURAL JOIN
in casi come questo):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t