0

只是想知道我在计算查询中返回的行数时是否会遇到任何问题,如下所示。

$stm = $dbh->prepare("SELECT * FROM `mytable`");
$stm->execute();

$data = $stm->fetchAll(PDO::FETCH_ASSOC);

echo "rows: ".count($data);

与使用相反

$stm = $dbh->prepare("SELECT COUNT(*) FROM `mytable`");`

性能方面,这更好,并且对于相对较小的数据库(不超过 1k 行)会导致任何问题。

4

2 回答 2

2

使用 SQLselect count(*) ...只返回一行,而select * ...返回多行。所以会有很大的通信开销。此外,如果您没有where子句,服务器可能只查找行数。相反,PHP 必须完全计算行数。

对于小型数据库,您可能不会注意到差异,但从一开始就注意性能并没有什么坏处。

于 2012-12-30T19:52:49.683 回答
2

使用COUNT(*)会好很多。MySQL 不需要访问所有数据,数据也不会发送到客户端。

阅读COUNT(*)MySQL 手册。

于 2012-12-30T19:53:02.307 回答