布谷 发表于 2015-10-24 10:52:48

MySQL高效获取记录总数

通常mysql获取查询记录总数我们使用如下语句:SELECT COUNT(*) FROM users WHERE k='avs';
或:
SELECT id FROM goods WHERE k='avs' LIMIT 10;但是记录总数总是需要单独的语句来查询,例如在分页查询程序中就有这样的问题,其实mysql可以在一次查询中获取记录和总数的,这就是要使用SQL_CALC_FOUND_ROWS参数,使用方法如下:SELECT SQL_CALC_FOUND_ROWS goods WHERE k='avs' LIMIT 10;
SELECT FOUND_ROWS();这虽然是两个sql语句,但是确是查询一次数据库,效率明显提高了一半!其中SQL_CALC_FOUND_ROWS 告诉Mysql将sql所处理的行数记录下来,FOUND_ROWS() 则取到了这个纪录。
使用如下:
$temp = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM $table LIMIT 1");
       $result = mysql_query("SELECT FOUND_ROWS()");
       $total = mysql_fetch_row($result);
       return $total;
或者:
sql="SELECT FOUND_ROWS() AS `found_rows`";
$result = mysql_query($sql);
$myrow = mysql_fetch_assoc($result);
$row_count = $myrow['found_rows'];
echo $row_count;



页: [1]
查看完整版本: MySQL高效获取记录总数