用php获取mysql表中记录总数的最佳方法是什么?

用php获取mysql表中记录总数的最佳方法是什么?,php,mysql,Php,Mysql,从大表中选择记录总数的最有效方法是什么?目前,我只是在做 $result = mysql_query("SELECT id FROM table"); $total = mysql_num_rows($result) 有人告诉我,如果表中有很多记录,那么这不是非常高效或快速 您应该使用: 你说得对。mysql可以为您完成这项工作,这将更加高效 $result = mysql_query( "select count(id) as num_rows from table" ); $row = m

从大表中选择记录总数的最有效方法是什么?目前,我只是在做

$result = mysql_query("SELECT id FROM table");
$total = mysql_num_rows($result)
有人告诉我,如果表中有很多记录,那么这不是非常高效或快速

您应该使用:


你说得对。mysql可以为您完成这项工作,这将更加高效

$result = mysql_query( "select count(id) as num_rows from table" );
$row = mysql_fetch_object( $result );
$total = $row->num_rows;

像这样的东西怎么样:

$result = mysql_query("SELECT COUNT(id) AS total_things from table");
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$num_results = $row["total_things"];
根据以下说明,如果使用MyISAM表(这是最常用的表类型),这是最有效的:


否则,您应该按照Wayne的说明进行操作,并确保已计数列已编制索引。

我可以补充一点,获取记录总数的最“有效”的方法,尤其是在一个大表中,是将总数保存为另一个表中的数字。 这样,您就不必每次都要查询整个表来获取总数

但是,您必须在数据库中设置一些代码或触发器,以便在添加/删除行时增加或减少该数字


<> P>这不是最简单的方法,但是如果你的网站增长了,你一定要考虑这样做。

< P> <强> MyISAM表已经存储行计数< /强>

SELECT COUNT(*) FROM table

在MyISAM表上,只读取该值。它不会扫描表或索引。因此,它与从不同的表中读取值一样快。

只是想注意,
显示表状态
返回一个
列,尽管我不能说明它的效率。一些轻微的谷歌搜索发现了两年前MySQL 4运行缓慢的报告。可能会有有趣的计时赛


还要注意有关不准确计数的问题。

即使我同意使用内置函数,我也看不到mysql_num_rows和count(id)之间有任何性能差异。对于25000个结果,相同的性能(可以说是精确的)仅用于记录。

使用聚合函数。请尝试下面的SQL命令

$num= mysql_query("SELECT COUNT(id) FROM $table");
mysqli_query()已弃用。最好使用这个:

$result = $dbh->query("SELECT id FROM {table_name}");
$total = $result->num_rows;
使用PDO:

$result = $dbh->query("SELECT id FROM {table_name}");
$total = $result->rowCount();

(其中“$dbh”=连接到的db的句柄)

Nice-我不知道在没有选择其他列的情况下他们优化了count(*)。尽管如此,如果对相关列执行计数(通常是主键),我还是喜欢保持这种习惯。
$result = $dbh->query("SELECT id FROM {table_name}");
$total = $result->num_rows;
$result = $dbh->query("SELECT id FROM {table_name}");
$total = $result->rowCount();