Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Вземете най-новите записи, по-стари от xxx, Производителност

Искате съставен индекс върху (objectID, time) :

ALTER TABLE my_table ADD INDEX (objectID, time)

Причината за това е, че след това MySQL може да извлече максималното time за всеки objectID директно от дървото на индекса; след това може също да използва същия индекс при обединяване срещу таблицата отново, за да намери максимум по групи записи, използващи нещо като втората ви заявка (но едната трябва да се присъедини към двете objectID и time — Обичам да използвам NATURAL JOIN в случаи като този):

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изберете всички редове с изключение на четирите последни

  2. Създаването на таблица е неуспешно с Ограничение на външния ключ е неправилно формирано

  3. какъв е смисълът от сериализиране на масиви, за да ги съхранявате в db?

  4. Генериране на поредица от дати

  5. Какви са плюсовете и минусите на различните типове полета за дата/час в MySQL?