代码之家  ›  专栏  ›  技术社区  ›  Starx

更快地了解MySQL数据库中的总行数?

  •  6
  • Starx  · 技术社区  · 14 年前

    如果我需要知道数据库表中的总行数,我会这样做:

    $query = "SELECT * FROM tablename WHERE link='1';";
    $result = mysql_query($query);
    $count = mysql_num_rows($result);
    

    更新: 我犯了一个错误,上面是我的实际方法。我向所有人道歉

    因此,您可以看到通过扫描整个数据库恢复的数据总数。

    有更好的方法吗?

    7 回复  |  直到 14 年前
        1
  •  18
  •   Chris    14 年前
    $query = "SELECT COUNT(*) FROM tablename WHERE link = '1'";
    $result = mysql_query($query);
    $count = mysql_result($result, 0);

    这意味着您没有在数据库和PHP之间传输所有数据,这显然是在浪费时间和资源。

    就其价值而言,您的代码实际上不会计算行数——它会给您两倍的列数,因为您正在计算表示一行的数组中的项目数(而mysql_fetch_array会给您每列数组中的两个条目——一个是数字,一个是列名)。

        2
  •  10
  •   webbiedave    14 年前
    SELECT COUNT(*) FROM tablename WHERE link='1';
    
        3
  •  4
  •   J. Polfer    14 年前

    你可以这样做:

    SELECT count(*) FROM tablename;
    

    供您查询。结果将是包含行数的单列。

        4
  •  3
  •   Mark Byers    14 年前

    如果我需要知道数据库表中的总行数

    也许我这里遗漏了一些内容,但是如果您只想得到表中的总行数,就不需要Where条件。只要这样做:

    SELECT COUNT(*) FROM tablename
    

    对于Where条件,您将只计算满足此条件的行数。

        5
  •  1
  •   xkeshav    14 年前

    使用下面的代码

    $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;
    
        6
  •  0
  •   Arshdeep    14 年前
        7
  •  0
  •   invarbrass    14 年前

    如果要使用以下SQL语句:

    SELECT COUNT(*) FROM tablename WHERE link='1';
    

    确保在“上有索引” 链接 专栏