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

Come ottimizzare le prestazioni di COUNT(*) su InnoDB utilizzando index

A partire da MySQL 5.1.6 è possibile utilizzare Event Scheduler e inserisci regolarmente il conteggio in una tabella delle statistiche.

Per prima cosa crea una tabella per contenere il conteggio:

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

Quindi crea un evento per aggiornare la tabella:

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

Non è perfetto ma offre una soluzione autonoma (senza cronjob o coda) che può essere facilmente adattata per essere eseguita tutte le volte che è richiesta la freschezza del conteggio.