Chcete složený index přes (objectID, time)
:
ALTER TABLE my_table ADD INDEX (objectID, time)
Důvodem je, že MySQL pak může získat maximální time
pro každé objectID
přímo z indexového stromu; pak může také použít stejný index při opětovném spojení s tabulkou k nalezení maximální počet skupin
záznamy používající něco jako váš druhý dotaz (ale jeden by se měl připojit k oběma objectID
a time
—Rád používám NATURAL JOIN
v případech, jako je tento):
SELECT *
FROM my_table NATURAL JOIN (
SELECT objectID, MAX(time) time
FROM my_table
WHERE time <= 1353143351
GROUP BY objectID
) t