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

No MySQL 5, SELECT COUNT(1) FROM table_name é muito lento


Contar todas as linhas em uma tabela é uma operação muito lenta; você não pode realmente acelerá-lo, a menos que esteja preparado para manter uma contagem em outro lugar (e, claro, isso pode ficar fora de sincronia).

As pessoas que estão acostumadas com o MyISAM tendem a pensar que recebem count(*) "de graça", mas na verdade não é. MyISAM trapaceia por não ter MVCC, o que o torna bastante fácil.

A consulta que você está mostrando está fazendo uma varredura de índice completa de um índice não nulo, que geralmente é a maneira mais rápida de contar as linhas em uma tabela innodb.

É difícil adivinhar a partir das informações que você forneceu, qual é o seu aplicativo, mas em geral, não há problema para os usuários (etc) verem aproximações do número de linhas em tabelas grandes.