sql >> Base de Datos >  >> RDS >> Mysql

Cómo optimizar el rendimiento de COUNT(*) en InnoDB usando el índice

A partir de MySQL 5.1.6, puede usar el Programador de eventos e inserte el conteo en una tabla de estadísticas regularmente.

Primero crea una tabla para mantener el conteo:

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

Luego crea un evento para actualizar la tabla:

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

No es perfecto, pero ofrece una solución autónoma (sin cronjob ni colas) que se puede adaptar fácilmente para ejecutarse con la frecuencia necesaria para la actualización del conteo.