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 屏幕时,只给出一个估计而不是进行昂贵的行计数是可以的。
编辑 config.inc.php,并更改MaxExactCount的设置。
$cfg['MaxExactCount'] 类型:整数 默认值:500000 对于 InnoDB 表,确定 phpMyAdmin 应获取多大的表 使用 SELECT COUNT 精确计算行数。如果返回的近似行数 通过 SHOW TABLE STATUS 小于这个值,就会使用 SELECT COUNT, 否则将使用近似计数。