使用'count'php-side来计算行数是否有任何缺点

时间:2012-12-30 19:48:07

标签: php mysql

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

$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行)出现任何问题。

2 个答案:

答案 0 :(得分:2)

使用SQL select count(*) ...执行此操作只返回一行,而select * ...返回许多行。因此,存在显着的通信开销。此外,如果您没有where子句,服务器可能只查找行数。相比之下,PHP必须完全计算行数。

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

答案 1 :(得分:2)

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

阅读MySQL手册中的COUNT(*)