两个快速的(我希望!)问题:
<<p> 计算行/strong> 在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:ServerDocsfile1.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];
1) mysql_query获取所有结果,然后对结果进行计数。因此,性能与结果的数量有关。如果您执行count(*),则它是一个只产生一行/列的DB选择。在这种情况下,数据库为您做了所有的事情,这通常被认为是更好的。
2) $count = mysql_fetch_array($count)[0];
不可能。
$count = mysql_fetch_array($count);
echo $count[0];