sql >> Databasteknik >  >> RDS >> Mysql

Hur man optimerar COUNT(*) prestanda på InnoDB genom att använda index

Från och med MySQL 5.1.6 kan du använda Event Scheduler och infoga räkningen i en statistiktabell regelbundet.

Skapa först en tabell för att hålla räkningen:

CREATE TABLE stats (
`key` varchar(50) NOT NULL PRIMARY KEY,
`value` varchar(100) NOT NULL);

Skapa sedan en händelse för att uppdatera tabellen:

CREATE EVENT update_stats
ON SCHEDULE
  EVERY 5 MINUTE
DO
  INSERT INTO stats (`key`, `value`)
  VALUES ('data_count', (select count(id) from data))
  ON DUPLICATE KEY UPDATE value=VALUES(value);

Det är inte perfekt men det erbjuder en fristående lösning (ingen cronjob eller kö) som enkelt kan skräddarsys för att köras så ofta som den nödvändiga fräschören i räkningen.



  1. En anslutning upprättades med servern, men sedan uppstod ett fel under handskakningen före inloggningen

  2. Hur man får dagnamnet från ett datum i Oracle

  3. java.lang.IllegalStateException:Det gick inte att läsa rad 0, kol -1 från CursorWindow - Android sqlite problem

  4. SQL Server PIVOT kanske?