Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更快地了解MySQL数据库中的行总数?_Php_Mysql_Records - Fatal编程技术网

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答案仍然是一样的:)为什么投了反对票???请至少写些理由。。这样我才能更新我的知识