Todo el mundo sabe que, en las tablas que usan InnoDB como motor, las consultas como SELECT COUNT(*) FROM mytable
son muy inexactas y muy lentas, especialmente cuando la tabla se hace más grande y hay inserciones / eliminaciones de filas constantes mientras se ejecuta esa consulta.
Como lo entendí, InnoDB no almacena el recuento de filas en una variable interna, que es la razón de este problema.
Mi pregunta es: ¿por qué es así? ¿Sería tan difícil almacenar esa información? Es una información importante para saber en tantas situaciones. La única dificultad que veo si tal recuento interno se implementaría es cuando se trata de transacciones: si la transacción no se confirma, ¿cuenta las filas insertadas por ella o no?
PD: No soy un experto en bases de datos, solo soy alguien que tiene MySQL como un simple pasatiempo. Entonces, si acabo de preguntar algo estúpido, no seas excesivamente crítico: D.
SELECT COUNT(*) FROM ...
consultas reales son precisas. Si lo prefiere, phpMyAdmin se puede configurar para usar siempre recuentos de filas exactos a expensas de la velocidad. Más información: stackoverflow.com/questions/11926259/…