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


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

1、mysql_num_rows

语法:
mysql_num_rows(data)  

使用实例:
<?php  
$con  = mysql_connect( "localhost" ,  "root" ,  "123" );  
if  (! $con )  
  { 
  die ( 'http://yige.org 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 );  
?>  

输出结果:3

2、count(*)

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

相关文章

粤ICP备11097351号-1