Es un problema conocido que innodb es lento en
SELECT count(*) FROM Table
Por eso lo evité. Pero noto que cada vez que inicio sesión en phpmyadmin, se ejecutará automáticamente count(*)
para mi tabla innodb con 19k filas, lo que puede tomar hasta un minuto en ejecutarse. Sin embargo, no se inicia así count(*)
para la otra tabla innodb con 4 millones de filas.
Otra pista, en phpmyadmin, bajo la columna Registros, el número de registros para la tabla de 19k filas muestra el valor exacto, mientras que la tabla de 4 millones de filas muestra un aprox.
Entiendo que innodb table da una estimación del recuento de filas. Pero parece que para una tabla más pequeña, en este caso con 19k filas, phpmyadmin decide hacer una en count(*)
lugar de solo dar una estimación.
La pregunta es, ¿hay alguna manera de evitar que phpmyadmin cuente en mi mesa innodb? Está bien dar una estimación en lugar de hacer un recuento costoso de filas cada vez que actualizo mi pantalla phpmyadmin.
20000
con un número menor, por ejemplo300
, guarde el archivo, actualice phpmyadmin y estará listo.Respuestas:
Edite config.inc.php y cambie la configuración de MaxExactCount .
fuente
phpMyAdmin solo hará un real
select count(*)
si el número estimado de filas está dentro del umbral establecido (el valor predeterminado es 500k dependiendo de su versión):Simplemente configure el umbral en un número menor para evitar
select count(*)
s sin sentido .fuente