当前位置:Gxlcms > 数据库问题 > php中mysql_num_rows与count(*)的效率对比

php中mysql_num_rows与count(*)的效率对比

时间:2021-07-01 10:21:17 帮助过:44人阅读

  • if (!$con)   
  •   {   
  •   die(‘Could not connect: ‘ . mysql_error());   
  •   }   
  • $db_selected = mysql_select_db("test_db",$con);   
  • $sql = "SELECT * FROM person";   
  • $result = mysql_query($sql,$con);   
  • echo <CODE>mysql_num_rows($result)</CODE>;   
  • mysql_close($con);   
  • ?>  
  • <?php
    $con = mysql_connect("localhost", "root", "123");
    if (!$con)
      {
      die(‘Could not connect: ‘ . mysql_error());
      }
    $db_selected = mysql_select_db("test_db",$con);
    $sql = "SELECT * FROM person";
    $result = mysql_query($sql,$con);
    echo mysql_num_rows($result);
    mysql_close($con);
    ?>

    输出结果:3

    2、count(*)

    语法:

    select count(column_name [as countname]) from table_name  
    select count(column_name [as countname]) from table_name

    3、测试两个的效率

    测试数据条数:151255条,表大小300M,先来看看分别用mysql_num_rows和count(*)取出所有数据的时间;

    count(*):用时0.071956872940063 s

    mysql_num_rows:用时35.272329092026 s

    同样可以取得一个表的所有记录数,为什么效率却差如此大呢?

    我们利用select count(*) 出来的结果,只有一行,是利用MySQL自身算法进行计算的。

    而mysql_num_rows则需要二次运算,先将全部资料查询,然后通过mysql_num_rows计算,是多行计算。
    第一种是利用MySQL自身的COUNT()函数,第二种则通过PHP函数进行。如果数据量非常非常大的话,第一种直接利用SQL语句计算的话会快,第二 种相对就会慢了

    转载自:http://blog.dc99.com/archives/10

    php中mysql_num_rows与count(*)的效率对比

    标签:用法   div   strong   时间   多行   计算   err   selected   alt   

    人气教程排行