SQL_CALC_FOUND_ROWS的用法
我们在分页程序中往往这样写
SELECT COUNT(*) from `table` WHERE xxxxxx; // 查出符合条件的记录总数
SELECT * FROM `table` WHERE xxxxxx limit M,N; // 查询当页要显示的数据
这种先统计总数,再统计分页的做法可以替换为下面的写法
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE xxxxxx limit M, N; // 获取指定页的数据,且统计总条数
其中的 SQL_CALC_FOUND_ROWS 语句会统计出符合筛选条件的记录总数,保存在mysql 端;
后面使用 SELECT FOUND_ROWS() 语句可以得到这个数字,不用再次计算。当然,如果你再次运行了SQL_CALC_FOUND_ROWS的话,这个数字就会被覆盖成最新的。
如果在前一条语句中没有使用SQL_CALC_FOUND_ROWS选项,SELECT FOUND_ROWS()将返回前一条语句实际返回的行数
注意
mysql会为当前连接保存这个值,各个连接的SQL_CALC_FOUND_ROWS结果互不影响
两条sql语句可以简化成一条sql语句,看似简单了,实则不然。
原因
1. 在有索引覆盖的情况下,SQL_CALC_FOUND_ROWS 和 COUNT(*)的效率差不多
2. 在没有索引覆盖的情况下,SQL_CALC_FOUND_ROWS的效率要远低于COUNT(*)的效率,大概只有COUNT(*)的十分之一,甚至更低
总结
不建议使用 SQL_CALC_FOUND_ROWS来获取总数
建议使用COUNT(*)来统计总数后,保存在本地
记得尽量使用索引覆盖,这样count(索引列)可以使用到索引覆盖,效率很高
SQL_CALC_FOUND_ROWS的用法相关推荐
- quvhu重复行MySQL,利用mysql中的SQL_CALC_FOUND_ROWS 来实现group by后的记录数统计
最近正在做一个显示消息的列表页,列表页中需要根据一个字段来分组显示.并且需要一个分页的效果. 大家也知道group by 后的数据是每一组一行记录,统计分组后的总的记录数又不能用count,所以SQL ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
- python yield 和 yield from用法总结
#例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...
- tf.nn.embedding_lookup()的用法
函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...
- OpenMP用法大全
OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...
- Dorado用法与示例
Dorado用法与示例 dorado用后总结 一.dorado概念 dorado的产品全名是"dorado展现中间件".从产品形态上dorado由两部分组成,第一部分是一个具有AJ ...
最新文章
- master page頁面如何用js來做輸入驗證
- WebAPI接口安全校验
- eclispe使用外部tomcat总结
- 德国拜尔集团迎来人工智能专家--李飞飞
- PostgreSQL类似Oracle MERGE功能的实现
- mvc:view-controller
- java数组冒泡排序法编程_java实现数组冒泡排序的方法
- COM口总是有惊叹号怎么办
- 车联网相关知识点整理
- python代理池搭建
- 获取iPhone手机 UDID的方式--一网打尽(无论有无MAC电脑)
- 计算机桌面空白图标如何删除,桌面上有两个i空白文件的图标删不掉怎么办急急急...
- 报错javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
- virtualbox安装androidx86进入console控制台,不能进入启动界面,卡死在detecting android-x86 found at /dev/sda1
- 我的游戏学习日志3——三国志GBA
- 惊了,Python 民俗社会科学项目,看看能否预测【面向哪里写BUG少】
- ICP许可证怎么申请?
- 一文读懂元数据管理!
- GPS授时服务器在电厂视频监控系统中的应用
- 智能楼宇3D虚拟仿真实训平台
热门文章
- WPS演示中万花筒效果的实现
- ***病毒的隐藏方式
- 办公室心理学-九型人格导图
- HDU多校4 - 6992 Lawn of the Dead(线段树+模拟)
- 洛谷 - P5192 Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流(有源汇有上下界的最大流)
- 牛客多校2 - All with Pairs(字符串哈希+next数组)
- CodeForces - 1300D Aerodynamic(几何+思维)
- CodeForces - 1200E Compress Words(字符串哈希)
- POJ - 3358 Period of an Infinite Binary Expansion(欧拉定理)
- 乘积的C语言,c语言矩阵相乘