两个快速(我希望!)问题:
计算行数
在 SQL 查询中使用 COUNT(id)
更有效,还是只选择所有行并在返回的资源上使用 PHP 的 mysql_num_rows()
函数?这是否取决于结果查询的大小?有没有一种相当简单的方法来确定这个问题的答案?
结果数组
目前,我在查询中使用 COUNT(id)
,然后显然使用 mysql_query()
和 mysql_fetch_array()
,如下:
$sql = "SELECT COUNT(id) FROM TABLE1;";
$resource = mysql_query($sql) or die(mysql_error())
$result = mysql_fetch_array($resource);
$count = $result[0];
这会返回正确的行数。然而,令我惊讶的是
$count = mysql_fetch_array($resource)[0];
不起作用;我收到错误:
Parse error: syntax error, unexpected '[' in C:\ServerDocs\file1.php on line 44
是否有关于发生了什么的简单解释?
提前致谢,
克里斯
最佳答案
这取决于具体情况,但
SELECT COUNT(*)
通常更快。 原因很简单,使用mysql_num_rows()
,数据库 服务器必须实际构建结果集。使用COUNT(*)
,在 另一方面,数据库可能能够确定行数 从索引,这要快得多。所以如果你想要的只是计数, 然后mysql_num_rows()
最终会为此做更多的工作 结果。另一个缺点是 mysql_num_rows 不适用于 无缓冲的查询。所以如果你需要处理非常大的结果 集,使用 mysql_num_rows 可能不是一个选项。但是,
COUNT(*)
始终可用。$count = mysql_fetch_array($resource)[0];
这种类型的语句在当前版本的 php 中是不可能的。 所以,更好地使用
$no_of_rows = mysql_fetch_array($count); echo $no_of_rows[0];
关于php - PHP 中的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461958/