sql >> Databáze >  >> RDS >> Mysql

MySQL:Získejte nejnovější položky starší než xxx, Výkon

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



  1. Existuje způsob, jak pomocí DBMS_Alert upozornit aplikaci Winform na změnu databáze

  2. Způsob, jak zjistit / získat uživatelské jméno Windows v Oracle APEX

  3. NOT IN v postgresql nefunguje

  4. Jak napsat bezpečný dotaz SELECT, který má proměnný počet hodnot zadaných uživatelem pomocí mysqli?