MySQL queries in PHP


MySQL queries in PHP

两个快速的(我希望!)问题:

<<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:'ServerDocs'file1.php on line 44 

对于发生了什么有一个简单的解释吗?

提前感谢,
克里斯。

  1. 这取决于情况,但SELECT COUNT(*)通常更快。原因很简单,使用mysql_num_rows(),数据库服务器必须实际构建结果集。与COUNT(*),在另一方面,数据库可以确定行数刚好从索引中,这要快得多。所以如果你只想要计数,然后mysql_num_rows()最终做了更多的工作结果。

    另一个缺点是mysql_num_rows不能工作无缓冲的查询。所以如果你需要处理非常大的结果设置时,使用mysql_num_rows可能不是一个选项。然而,COUNT(*)

  2. $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];