每当 phpMyAdmin 加载时,InnoDB 上的 COUNT(*)

8 mysql innodb

innodb 运行缓慢是一个已知问题

SELECT count(*) FROM Table
Run Code Online (Sandbox Code Playgroud)

因此我避免了这一点。但是我注意到,每当我登录到 phpmyadmin 时,它都会自动count(*)为我的 innodb 表执行19k 行,这可能需要长达一分钟的时间来执行。然而它并没有启动这样的count(*)为另一个有 400 万行的 innodb 表的操作。

另一个线索,在 phpmyadmin 中,在 Records 列下,19k 行表的记录数显示精确值,而 400 万行表显示约

我知道 innodb 表给出了行数的估计。但似乎对于较小的表,在这种情况下有 19k 行,phpmyadmin 决定做一个count(*)而不是仅仅给出一个估计。

问题是,有没有办法阻止 phpmyadmin 对我的 innodb 表进行此类计数?每当我刷新我的 phpmyadmin 屏幕时,只给出一个估计而不是进行昂贵的行计数是可以的。

Mik*_*ll' 3

编辑 config.inc.php,并更改MaxExactCount的设置。

$cfg['MaxExactCount']
    类型:整数
    默认值:500000

对于 InnoDB 表,确定 phpMyAdmin 应获取多大的表
使用 SELECT COUNT 精确计算行数。如果返回的近似行数
通过 SHOW TABLE STATUS 小于这个值,就会使用 SELECT COUNT,
否则将使用近似计数。