Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Obtenha as entradas mais recentes com mais de xxx, Desempenho


Você quer um índice composto sobre (objectID, time) :
ALTER TABLE my_table ADD INDEX (objectID, time)

A razão para isso é que o MySQL pode então recuperar o máximo de time para cada objectID diretamente da árvore de índice; ele também pode usar o mesmo índice ao juntar-se à tabela novamente para encontrar o máximo de grupo registros usando algo como sua segunda consulta (mas deve-se juntar em ambos objectID e time —Eu gosto de usar um NATURAL JOIN em casos como este):
SELECT *
FROM   my_table NATURAL JOIN (
  SELECT   objectID, MAX(time) time
  FROM     my_table
  WHERE    time <= 1353143351
  GROUP BY objectID
) t