php - SQL 和 PHP - mysqli_num_rows() 和 'select count()' 哪个更快?

标签 php sql performance

如果我只是想获取表中的行数,我只是想知道哪种方法最有效。

$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/

相关文章:

php - 为什么在查询中添加两个新字段后 SQL 查询不起作用?

java - 如何连接同一个表中的两列

c++ - 从午夜开始获取纳秒级的最低延迟

SQL INNER JOIN问题

javascript - 使用 jQuery 创建更深的嵌套节点和属性时,哪种方法性能更高?

php - MYSQL Link,连接两个表

php - mm表中多重AND的mysql语句

php - 如何根据 PHP 中的值替换映射替换数组值?

sql - 需要 .sql 文件

c# - 更新绑定(bind)到 dataSet dataTable 的 listView,它从 SQL c# wpf 中查找数据