sql >> Database teknologi >  >> RDS >> Mysql

MySQL:Få de nyeste poster, der er ældre end xxx, Performance

Du vil have et sammensat indeks over (objectID, time) :

ALTER TABLE my_table ADD INDEX (objectID, time)

Grunden til dette er, at MySQL så kan hente den maksimale time for hvert objectID direkte fra indekstræet; den kan så også bruge det samme indeks til at slutte sig til tabellen igen for at finde gruppevist maksimum poster ved hjælp af noget som din anden forespørgsel (men den ene skal slutte sig til begge objectID og time —Jeg kan godt lide at bruge en NATURAL JOIN i tilfælde som dette):

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



  1. CREATE VIEW WHERE SELECTid =VIEWrowID

  2. mysql hvis rækken ikke eksisterer, tag standardværdien

  3. kunne ikke finde den lagrede procedure

  4. Flere primære nøgler til tabel app_employee er ikke tilladt.