只是想知道我是否在计算查询中返回的行数方面遇到任何问题,如下所示。
$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行)出现任何问题。
答案 0 :(得分:2)
使用SQL select count(*) ...
执行此操作只返回一行,而select * ...
返回许多行。因此,存在显着的通信开销。此外,如果您没有where
子句,服务器可能只查找行数。相比之下,PHP必须完全计算行数。
使用小型数据库,您可能没有注意到差异,但从一开始就注意到性能并没有什么坏处。
答案 1 :(得分:2)
使用COUNT(*)
要好得多。 MySQL不需要访问所有数据,也不会向客户端发送数据。
阅读MySQL手册中的COUNT(*)
。