mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
SELECT语句中经常可能用LIMIT限制返回行数。有时候可能想要知道如果没有LIMIT会返回多少行,但又不想再执行一次相同语句。那么,在SELECT查询中包含SQL_CALC_FOUND_ROWS选项,然后执行FOUND_ROWS()就可以了:
代码如下 | 复制代码 |
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name -> WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS(); |
COUNT(*) 的稍微不同之处在于,它返回检索行的数目, 不论其是否包含 NULL值。
SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。例如:
代码如下 | 复制代码 |
mysql> SELECT COUNT(*) FROM tablename; |
这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函数返回记录的精确数量,而且非常容易访问。对于事务型的存储引擎(InnoDB, BDB), 存储一个精确行数的问题比较多,原因是可能会发生多重事物处理, 而每个都可能会对行数产生影响。
COUNT(DISTINCT expr,[expr...])
返回不同的非NULL值数目。
若找不到匹配的项,则COUNT(DISTINCT)返回 0 。
PHP代码:
代码如下 | 复制代码 |
<?php $sql = "select count(*) from t"; $res = mysql_query($sql); $num = mysql_result($res,0); $sql = "select topic,detail from t limit 5"; //***以下我就不写了 ?> |
然而用mysql自带函数found_rows();
也可以快速求出总数
PHP代码:
代码如下 | 复制代码 |
<?php $sql = "select sql_calc_found_rows topic,detail from t limit 5"; $sql = "select found_rows()"; $num = mysql_result($res,0); ?> |
这种方法使用时所要注意的问题
引用:
1 必须以select sql_calc_found_rows 开头
2 这时found_rows() 为 没有limite 时的行数
以下为一个演示 希望大家看了更加明白
PHP代码:
代码如下 | 复制代码 |
mysql> select count(*) from zd_sort2; +----------+ | count(*) | +----------+ | 20 | +----------+ 1 row in set (0.14 sec) mysql> select sql_calc_found_rows st2_id from zd_sort2 limit 3; +--------+ | st2_id | +--------+ | 1 | | 6 | | 12 | +--------+ 3 rows in set (0.00 sec) mysql> select found_rows(); +--------------+ | found_rows() | +--------------+ | 20 | +--------------+ 1 row in set (0.00 sec) mysql> |
着两中方法效率如何呢
最新文章
- 微软CodeDom模型学习笔记(全)
- Windows 新装进阶操作指南
- jQuery实现无限加载瀑布流特效
- linux 高级编程之库的使用
- js中查找一个字符是否存在。
- centOS设置zookeeper开机自动启动
- ASP.NET 窗体间传值实现方法详解
- 利用Readability解决网页正文提取问题
- geotrellis使用(三十二)大量GeoTiff文件实时进行TMS服务
- 对 Undefined 与 Null 的一些理解
- selenium调用webdriver异常
- 20164319 刘蕴哲 Exp2 后门原理与实践
- 迅为-i.MX6Q核心板_四核工业级
- hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
- NetBeans IDE 多行标签设置方法
- Zabbix系统中的历史数据和趋势数据
- response.sendRedirect跳转 jsp:forward跳转
- nodejs API(一)
- poj 1523 SPF(双连通分量割点模板)
- 获取泛型类对应的class类型
热门文章
- Azure File SMB3.0文件共享服务(1)
- Azure上Linux虚拟机Mac地址的持久化
- js 异步流程控制之 avQ(avril.queue)
- Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5
- 让C/C++程序一次编译可以发布到多版本Linux之上
- cocos2d-x 打包工具用Shell 还是 用 Python
- jquery如何获得页面元素的坐标值
- SharePoint 2013 代码实现自定义的站点模版创建Site Collection
- document load 与document ready的区别
- Linux学习1——首次登录