mysql_num_rows($result)和select count()的区别
2010-11-01 21:29
876 查看
mysql_num_rows($result)和
$sql = "select count(id) from `content`";
//$rs= mysql_query($sql);
$rs= mysql_fetch_array(mysql_query($sql));
$total=$rs[0];
有啥区别?比如含义上,性能上啥的?
利用select count(*) ,出来的结果,只有一行,是利用MySQL自身算法进行计算的。
mysql_num_rows则需要二次算:先将全部资料查询,然后通过mysql_num_rows计算,是多行计算。
第一种是利用MySQL自身的COUNT()函数,第二种则通过PHP函数进行。
如果数据量非常非常大的话,第一种直接利用SQL语句计算的话会快一些,第二种相对会慢一些。
不过小数量级的数据表其实差异估计也看不出太大变化来,呵呵。
一般获取个数都是做分页用的,所以不光要查出个数,还要数据的内容
个人感觉要看数据量多少了,如果数据量多用SELECT COUNT(),这样还要进行SELECT *查询
如果数据量少,用mysql_num_rows(),这样少了一次查询等于,直接SELECT *完了后就mysql_num_rows()行了
经过测试,30万条数据的查询速度差异明显.
使用select count(0)快很多
不知道count(*)和count(id)哪个快些
有什么区别?
COUNT(id) 是比较快的。×需要MYSQL检索全部字段,不过我记得MYISAM表中MYSQL把 × 直接是当作主键索引来处理的。(如果你的MYSQL缓存比较大,读取就没什么差别了。600W数量以下没什么差别,个人经验。我的测试千万级别以上就不行了。(表未分区,性能受影响。))
SELECT COUNT(*) 在有查询条件下快过 SELECT COUNT(Id)
——————————————————————————————————————————————————————————————————
在MyISAM存储引擎上没有任何差距,至少在我的机器上2500万行的数据上没有速度上的区别,
select count(id),在id为主键的情况下,取决于你所用的存储引擎,MyISAM引擎已经存储了相关的行数信息,所以当你使用这条语句查询行数的时候立马就会出来数据,不需要mysql来计算,而InnoDb引擎就不动了,你灌入2500万的数据试试,两种引擎马上就会出现差距,而且差距巨大,
在用一存储引擎并且没有WHERE条件的情况下,没啥差距,如果有了WHERE条件,那样select count(id)要比count(*)快一点点,而且还不明显,
试问,在实际应用上有几个表的数据会上千万的级别了?早就做分表分库处理了。
$sql = "select count(id) from `content`";
//$rs= mysql_query($sql);
$rs= mysql_fetch_array(mysql_query($sql));
$total=$rs[0];
有啥区别?比如含义上,性能上啥的?
利用select count(*) ,出来的结果,只有一行,是利用MySQL自身算法进行计算的。
mysql_num_rows则需要二次算:先将全部资料查询,然后通过mysql_num_rows计算,是多行计算。
第一种是利用MySQL自身的COUNT()函数,第二种则通过PHP函数进行。
如果数据量非常非常大的话,第一种直接利用SQL语句计算的话会快一些,第二种相对会慢一些。
不过小数量级的数据表其实差异估计也看不出太大变化来,呵呵。
一般获取个数都是做分页用的,所以不光要查出个数,还要数据的内容
个人感觉要看数据量多少了,如果数据量多用SELECT COUNT(),这样还要进行SELECT *查询
如果数据量少,用mysql_num_rows(),这样少了一次查询等于,直接SELECT *完了后就mysql_num_rows()行了
经过测试,30万条数据的查询速度差异明显.
使用select count(0)快很多
不知道count(*)和count(id)哪个快些
有什么区别?
COUNT(id) 是比较快的。×需要MYSQL检索全部字段,不过我记得MYISAM表中MYSQL把 × 直接是当作主键索引来处理的。(如果你的MYSQL缓存比较大,读取就没什么差别了。600W数量以下没什么差别,个人经验。我的测试千万级别以上就不行了。(表未分区,性能受影响。))
SELECT COUNT(*) 在有查询条件下快过 SELECT COUNT(Id)
——————————————————————————————————————————————————————————————————
在MyISAM存储引擎上没有任何差距,至少在我的机器上2500万行的数据上没有速度上的区别,
select count(id),在id为主键的情况下,取决于你所用的存储引擎,MyISAM引擎已经存储了相关的行数信息,所以当你使用这条语句查询行数的时候立马就会出来数据,不需要mysql来计算,而InnoDb引擎就不动了,你灌入2500万的数据试试,两种引擎马上就会出现差距,而且差距巨大,
在用一存储引擎并且没有WHERE条件的情况下,没啥差距,如果有了WHERE条件,那样select count(id)要比count(*)快一点点,而且还不明显,
试问,在实际应用上有几个表的数据会上千万的级别了?早就做分表分库处理了。
相关文章推荐
- mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
- php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
- Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how man
- mysql 的mysql_store_result 和mysql_num_rows
- mysql_num_fields与mysql_field_count的区别
- PHP函数mysql_affected_rows()与mysql_num_rows()有什么区别?
- mysql_num_rows VS COUNT 效率问题分析
- mysql_num_rows VS COUNT 效率问题分析
- mysql_num_rows(),mysql_fetch_row(),mysql_affected_rows的区别
- php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)使用方法差别
- mysql_num_rows()和mysql_affected_rows()的作用和区别(新浪)
- PHP中mysql_affected_rows()和mysql_num_rows()区别
- mysql技巧之select count的区别分析
- mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
- php中mysql_num_rows与count(*)的效率对
- mysql技巧之select count的区别分析
- MySQL count(”欄位”) vs mysql_num_rows 速度?
- php的数据库函数中mysql_fetch_row、mysql_affected_rows、mysql_num_rows的区别
- mysql_num_rows VS COUNT 效率问题分析
- mysql_num_fields与mysql_field_count的区别