Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como otimizar o desempenho de COUNT(*) no InnoDB usando o índice


A partir do MySQL 5.1.6 você pode usar o Event Scheduler e insira a contagem em uma tabela de estatísticas regularmente.

Primeiro crie uma tabela para conter a contagem:
CREATE TABLE stats (
`key` varchar(50) NOT NULL PRIMARY KEY,
`value` varchar(100) NOT NULL);

Em seguida, crie um evento para atualizar a tabela:
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);

Não é perfeito, mas oferece uma solução independente (sem cronjob ou fila) que pode ser facilmente adaptada para ser executada com a frequência necessária para a contagem.