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

Tengo una tabla InnoDB grande pero estrecha con ~ 9m registros. Obracount(*) ocount(id) En la mesa es extremadamente lento (6+ segundos):

DROP TABLE IF EXISTS `perf2`;

CREATE TABLE `perf2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `channel_id` int(11) DEFAULT NULL,
  `timestamp` bigint(20) NOT NULL,
  `value` double NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ts_uniq` (`channel_id`,`timestamp`),
  KEY `IDX_CHANNEL_ID` (`channel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

RESET QUERY CACHE;
SELECT COUNT(*) FROM perf2;

Si bien la declaración no se ejecuta con demasiada frecuencia, sería bueno optimizarla. De acuerdo ahttp://www.cloudspace.com/blog/2009/08/06/fast-mysql-innodb-count-really-fast/ esto debería ser posible forzando a InnoDB a usar un índice:

SELECT COUNT(id) FROM perf2 USE INDEX (PRIMARY);

El plan de explicación parece estar bien:

id  select_type table   type    possible_keys   key     key_len ref     rows    Extra
1   SIMPLE      perf2   index   NULL            PRIMARY 4       NULL    8906459 Using index

Desafortunadamente la afirmación es tan lenta como antes. De acuerdo a"SELECT COUNT (*)" es lento, incluso con la cláusula where También he intentado optimizar la tabla sin éxito.

¿Cuál es la forma de optimizar?COUNT(*) rendimiento en InnoDB?

Respuestas a la pregunta(4)

Su respuesta a la pregunta