Todo mundo sabe que, em tabelas que usam o InnoDB como mecanismo, consultas como SELECT COUNT(*) FROM mytable
são muito inexatas e muito lentas, especialmente quando a tabela fica maior e há inserções / exclusões constantes de linhas enquanto essa consulta é executada.
Pelo que entendi, o InnoDB não armazena a contagem de linhas em uma variável interna, que é a razão desse problema.
Minha pergunta é: por que isso acontece? Seria tão difícil armazenar essas informações? É uma informação importante para saber em tantas situações. A única dificuldade que vejo se uma contagem interna seria implementada é quando as transações estão envolvidas: se a transação não for confirmada, você conta as linhas inseridas por ela ou não?
PS: Eu não sou especialista em DBs, sou apenas alguém que tem o MySQL como um hobby simples. Portanto, se eu apenas pedir algo estúpido, não seja excessivamente crítico: D.
SELECT COUNT(*) FROM ...
consultas reais são precisas. Se preferir, o phpMyAdmin pode ser configurado para sempre usar contagens exatas de linhas à custa da velocidade. Mais informações: stackoverflow.com/questions/11926259/...