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

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

使用PHP的朋友都知道,一般情况下,我们要得到某项记录总数,都有两个办法可以得到:一个是使用php自身的mysql_num_rows函数来得到,另外一个是使用Sql自身count来查询获取,下面我们具体看看两个的用法:

1、mysql_num_rows

语法:

  1. mysql_num_rows(data)  

使用实例:

  1. <?php  
  2. $con = mysql_connect("localhost""root""123");  
  3. if (!$con)  
  4.   {  
  5.   die('Could not connect: ' . mysql_error());  
  6.   }  
  7. $db_selected = mysql_select_db("test_db",$con);  
  8. $sql = "SELECT * FROM person";  
  9. $result = mysql_query($sql,$con);  
  10. echo <code>mysql_num_rows($result)</code>;  
  11. mysql_close($con);  
  12. ?>  

输出结果:3

2、count(*)

语法:

  1. 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语句计算的话会快,第二 种相对就会慢了



看到文章最后,可能你会很火! 
即然count(*) 性能很好,为什么 还要有mysql_num_rows函数呢?
个人理解(经过与我的好朋友,“颜半仙”讨论,其实这两个没有可比性,就好比c语言和php语言不能一概比较谁好谁坏一样,它们针对的使用场景是不同的):
手懒的人,可以直接用mysql_num_rows ,追求性能的人就用count query吧!
毕竟,query 加上一些条件,,写起来是很麻烦的。




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值