如果我只是想获取表中的行数,我只是想知道哪种方法最有效。
$res = mysql_query("SELECT count(*) as `number` FROM `table1`");
$count = mysql_fetch_result($res,0,'number');
或
$res = mysql_query("SELECT `ID` FROM `table1`");
$count = mysql_num_rows($res);
有人对此做过任何像样的测试吗?
最佳答案
mysql_query()在返回之前将所有结果记录从 MySQL 传输到 php 进程(与 mysql_unbufferd_query() 不同)。仅此一点就会使 mysql_num_rows() 版本变慢。
此外,对于某些引擎(如 MyISAM),MySQL 可以从表 without hitting the actual data 的索引处提供 Count(*) 请求。 。另一方面,SELECT * FROM foo
会导致全表扫描,并且 MySQL 必须读取每个数据集。
关于php - SQL 和 PHP - mysqli_num_rows() 和 'select count()' 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29606464/