sql >> Database >  >> RDS >> Mysql

Hoe COUNT(*) prestaties op InnoDB te optimaliseren met behulp van index

Vanaf MySQL 5.1.6 kunt u de Event Scheduler en voeg de telling regelmatig toe aan een statistiekentabel.

Maak eerst een tabel om de telling bij te houden:

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

Maak vervolgens een evenement om de tafel bij te werken:

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);

Het is niet perfect, maar het biedt een op zichzelf staande oplossing (geen cronjob of wachtrij) die gemakkelijk kan worden aangepast om zo vaak te worden uitgevoerd als de vereiste versheid van de telling.



  1. Hoe 1985-02-07T00:00:00.000Z (ISO8601) naar een datumwaarde in Oracle te converteren?

  2. SEC_CASE_SENSITIVE_LOGON Verouderd in 12c

  3. Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL - Deel 6

  4. Beverly Hills 90210 en ZIP+4:omgaan met adressen in gegevensmodellen