在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍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>

着两中方法效率如何呢

最新文章

  1. 微软CodeDom模型学习笔记(全)
  2. Windows 新装进阶操作指南
  3. jQuery实现无限加载瀑布流特效
  4. linux 高级编程之库的使用
  5. js中查找一个字符是否存在。
  6. centOS设置zookeeper开机自动启动
  7. ASP.NET 窗体间传值实现方法详解
  8. 利用Readability解决网页正文提取问题
  9. geotrellis使用(三十二)大量GeoTiff文件实时进行TMS服务
  10. 对 Undefined 与 Null 的一些理解
  11. selenium调用webdriver异常
  12. 20164319 刘蕴哲 Exp2 后门原理与实践
  13. 迅为-i.MX6Q核心板_四核工业级
  14. hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
  15. NetBeans IDE 多行标签设置方法
  16. Zabbix系统中的历史数据和趋势数据
  17. response.sendRedirect跳转 jsp:forward跳转
  18. nodejs API(一)
  19. poj 1523 SPF(双连通分量割点模板)
  20. 获取泛型类对应的class类型

热门文章

  1. Azure File SMB3.0文件共享服务(1)
  2. Azure上Linux虚拟机Mac地址的持久化
  3. js 异步流程控制之 avQ(avril.queue)
  4. Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5
  5. 让C/C++程序一次编译可以发布到多版本Linux之上
  6. cocos2d-x 打包工具用Shell 还是 用 Python
  7. jquery如何获得页面元素的坐标值
  8. SharePoint 2013 代码实现自定义的站点模版创建Site Collection
  9. document load 与document ready的区别
  10. Linux学习1——首次登录