吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5563|回复: 0
打印 上一主题 下一主题

MySQL高效获取记录总数

[复制链接]

12

主题

14

帖子

69

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
69
跳转到指定楼层
楼主
发表于 2015-10-24 10:52:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

通常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[0];
或者:
sql="SELECT FOUND_ROWS() AS `found_rows`";
$result = mysql_query($sql);
$myrow = mysql_fetch_assoc($result);
$row_count = $myrow['found_rows'];
echo $row_count;



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-12-22 20:30 , Processed in 1.078125 second(s), 9 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表