Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Holen Sie sich die neuesten Einträge, die älter als xxx sind, Leistung

Sie möchten einen zusammengesetzten Index über (objectID, time) :

ALTER TABLE my_table ADD INDEX (objectID, time)

Der Grund dafür ist, dass MySQL dann die maximale time abrufen kann für jede objectID direkt aus dem Indexbaum; es kann dann auch denselben Index verwenden, um erneut mit der Tabelle zu verbinden, um die gruppenweises Maximum Datensätze, die so etwas wie Ihre zweite Abfrage verwenden (aber man sollte beide objectID verbinden und time —Ich verwende gerne einen NATURAL JOIN in solchen Fällen):

SELECT *
FROM   my_table NATURAL JOIN (
  SELECT   objectID, MAX(time) time
  FROM     my_table
  WHERE    time <= 1353143351
  GROUP BY objectID
) t