在没有fetchAll()的情况下获取innodb表的行数

时间:2019-07-16 14:25:36

标签: php mysql pdo innodb

我有一个包含40k +行的表,我想知道查询结果表的实际行数

`SELECT COUNT(*) FROM `pricelist` GROUP BY `vendor_id`;`

结果表位于pricelist行计数附近,因为少量vendor_id正在重复。 搜索互联网,我发现唯一的方法就是执行类似的查询

SELECT COUNT(*) FROM `pricelist`;

然后

$array = $pdo->fetchAll()

count($array);

将获得实际的行数,但是$ array变量非常大,并且memory_limit = 256M时我的内存已耗尽。

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)

当然,我可以为内存限制添加一些额外的MB,但是如果表将包含100万行怎么办?人们如何处理大型数据库中的这种情况?

$query = "SELECT COUNT(*) FROM ".UPLOAD_TABLE." GROUP BY `vendor_id`;";
$stmnt = $this->connection->prepare($query);
$stmnt->execute();
$tableSize = count($stmnt->fetchAll(PDO::FETCH_NUM));

0 个答案:

没有答案