我只是想知道如果我只是想获取表中的行数,哪种方法最有效。
$res = mysql_query("SELECT count(*) as `number` FROM `table1`");
$count = mysql_fetch_result($res,0,'number');
or
$res = mysql_query("SELECT `ID` FROM `table1`");
$count = mysql_num_rows($res);
有人对此做过任何像样的测试吗?
mysql_query() http://docs.php.net/mysql_query在返回之前将所有结果记录从 MySQL 传输到 php pcrocess(与mysql_unbufferd_query() http://docs.php.net/mysql_unbuffered_query)。仅此一点就会使 mysql_num_rows() 版本变慢。
此外,对于某些引擎(如 MyISAM),MySQL 可以处理来自表索引的 Count(*) 请求而不触及实际数据 http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count. A SELECT * FROM foo
另一方面会导致全表扫描,MySQL 必须读取每个数据集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)