Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment optimiser les performances de COUNT(*) sur InnoDB en utilisant l'index

Depuis MySQL 5.1.6, vous pouvez utiliser le Event Scheduler et insérez régulièrement le décompte dans un tableau de statistiques.

Créez d'abord une table pour tenir le compte :

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

Créez ensuite un événement pour mettre à jour le tableau :

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

Ce n'est pas parfait, mais il offre une solution autonome (pas de tâche cron ni de file d'attente) qui peut être facilement adaptée pour s'exécuter aussi souvent que la fraîcheur requise du décompte.