Php 更快地了解MySQL数据库中的行总数?
如果我需要知道数据库表中的行总数,我可以这样做:Php 更快地了解MySQL数据库中的行总数?,php,mysql,records,Php,Mysql,Records,如果我需要知道数据库表中的行总数,我可以这样做: $query = "SELECT * FROM tablename WHERE link='1';"; $result = mysql_query($query); $count = mysql_num_rows($result); 更新:我犯了一个错误,以上是我的实际做法。我向大家道歉 因此,您可以看到通过扫描整个数据库恢复的数据总数 有更好的方法吗?您可以这样做: SELECT COUNT(*) FROM tablename WHERE l
$query = "SELECT * FROM tablename WHERE link='1';";
$result = mysql_query($query);
$count = mysql_num_rows($result);
更新:我犯了一个错误,以上是我的实际做法。我向大家道歉
因此,您可以看到通过扫描整个数据库恢复的数据总数
有更好的方法吗?您可以这样做:
SELECT COUNT(*) FROM tablename WHERE link='1';
SELECT count(*) FROM tablename;
谢谢你的提问。结果将是一个包含行数的单列
$query = "SELECT COUNT(*) FROM tablename WHERE link = '1'";
$result = mysql_query($query);
$count = mysql_result($result, 0);
这意味着您没有在数据库和PHP之间传输所有数据,这显然是对时间和资源的巨大浪费
值得一提的是,您的代码实际上不会计算行数-它会给您2倍的列数,因为您正在计算表示一行的数组中的项目数(mysql_fetch_数组在数组中为每列提供两个条目-一个数字,一个用于列名)
如果我需要知道数据库表中的行总数
也许我在这里遗漏了一些东西,但如果您只想获得表中的行总数,则不需要WHERE条件。只要这样做:
SELECT COUNT(*) FROM tablename
使用WHERE条件,您将只计算满足此条件的行数。我认为您需要此条件。如果要使用以下SQL语句:
SELECT COUNT(*) FROM tablename WHERE link='1';
确保“链接”列上有索引使用下面的代码
$qry=SHOW TABLES FROM 'database_name';
$res=mysql_query($qry);
$output=array();
$i=0;
while($row=mysql_fetch_array($res,MYSQL_NUM)){
++$i;
$sql=SELECT COUNT(*) FROM $row[0];
$output[$i]=mysql_query($sql);
}
$totalRows=array_sum($ouptput);
echo $totalRows;
@佩德罗-可能没什么区别。@Pedro等人,你不应该使用列名。不计算该列中的空值。有些人建议使用count(1),因为它速度更快,但这在所有数据库管理系统中都是垃圾,除了最死气沉沉的数据库管理系统。@Pedro:(*)会导致稍快的性能,因为MySQL会自动使用索引来获得结果。从技术上讲,count($rows)调用是在PHP land中计算$rows数组中的行,不是通过在database-land中扫描数据库。虽然您的方法不是最佳的,但它也是错误的。您将获得字段数,而不是行数。乘以2。是否要链接='1'?如果该表中的所有记录都有link='1',则使用下面的示例可以得到该表中所有记录的计数,但通常情况并非如此。如果你真的想获取所有记录,我会删除链接='1'。我必须更新我的问题。请看-1坏主意。这需要执行完整的查询。
SELECT count(*)
更有效。@Kenaniah:不一定是个坏主意。如果OP所寻找的只是行数,那么是的,这是个坏主意。但是,如果OP在其他操作中需要数据,那么mysql\u num\u rows()
可能更适合。@Joseph同意其他上下文。但是在这个问题的背景下,这是一个坏主意。@Starx答案仍然是一样的:)为什么投了反对票???请至少写些理由。。这样我才能更新我的知识