有兩種方法:
一、
$res = mysql_query("select * from tableName");
$nums = mysql_num_rows($res);
二、
$res = mysql_query("select count(*) as total from tableName");
if($row=mysql_fetch_array($res)) $nums = $row['total'];
现在有个疑问,哪种速度会比较快呢?
我的想法是:如果数据库有100万条数据,第一种方法$res数据有100万条记录,缓存在内存中,这样是不是很不好。
而第二种方法,结果集$res只是有一行一列。这样会不会比较好?

解决方案 »

  1.   

    有得个几个大于1G的文件你用select * 卡都要卡半天
      

  2.   

    我一直用第二个,
    以前用asp时就一直用select count(*)from,后来刚转php时折腾好一阵才找到第二种那个写法。
      

  3.   

    说到速度。。应该是第二种他是通过sql来查询得到。。第一种是通过php自带的函数来统计。。
      

  4.   

    COUNT(expr) 
    返回SELECT语句检索到的行中非NULL值的数目。   若找不到匹配的行,则COUNT() 返回 0 。 mysql> SELECT student.student_name,COUNT(*)    ->        FROM student,course    ->        WHERE student.student_id=course.student_id    ->        GROUP BY student_name; COUNT(*) 的稍微不同之处在于,它返回检索行的数目, 不论其是否包含 NULL值。SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。例如:mysql> SELECT COUNT(*) FROM student;这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函数返回记录的精确数量,而且非常容易访问。对于事务型的存储引擎(InnoDB, BDB), 存储一个精确行数的问题比较多,原因是可能会发生多重事物处理, 而每个都可能会对行数产生影响。