sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Få de senaste posterna äldre än xxx, Performance

Du vill ha ett sammansatt index över (objectID, time) :

ALTER TABLE my_table ADD INDEX (objectID, time)

Anledningen till detta är att MySQL då kan hämta den maximala time för varje objectID direkt från indexträdet; den kan sedan också använda samma index för att gå med i tabellen igen för att hitta gruppvis maximalt poster med något liknande din andra fråga (men en bör gå med på båda objectID och time —Jag gillar att använda en NATURAL JOIN i sådana här fall):

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



  1. Hur får man en korrekt dump med mysqldump och single-transaction när DDL används samtidigt?

  2. Insekt? #1146 - Tabell 'xxx.xxxxx' finns inte

  3. kommaseparerade fält för att jämföra i mysql

  4. Infoga tidsstämpel med JdbcTemplate i Oracle-databasen ( ORA-01858 )