位置: 编程技术 - 正文

MySQL分页优化(mysql大分页优化)

编辑:rootadmin

推荐整理分享MySQL分页优化(mysql大分页优化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql 分页优化,mysql 分页优化,mysql uuid分页优化,mysql分页实现原理,mysql分页性能优化,mysql uuid分页优化,MySQL分页优化的其他方法,mysql分页性能优化,内容如对您有帮助,希望把文章链接给更多的朋友!

最近,帮同事重写了一个MySQL SQL语句,该SQL语句涉及两张表,其中一张表是字典表(需返回一个字段),另一张表是业务表(本身就有个字段,需全部返回),当然,字段的个数是否合理在这里不予评价。平时,返回的数据大概5w左右,系统尚能收到数据。但月日那天,数据量大概w,导致SQL执行时间过长,未能在规定的时间内反馈结果,于是系统直接报错。

一般的思路是用MySQL的分页功能,即直接在原SQL语句后面增加LIMIT子句。但请注意,虽然你看到的反馈结果只是LIMIT后面指定的数量,于是想当然的以为MySQL只是检索了指定数量的数据,然后给予返回。其实,MySQL内部实现的原理是,检索所有符合where条件的记录,然后返回指定数量的记录。从这个角度来看,直接在原SQL语句后面添加LIMIT子句只能说是一种可以实现功能的方案,但未必最优。

具体在本例中,首先我们来看一下个字段的表的统计信息:

一行大概就占2k,而Innodb默认页的大小为k,这意味着,一个页中最多可存储8行的数据。随机读的可能性大大增加。而这无疑会对数据库系统的IO造成极大的压力。

优化前

如果采用上述方案,即直接在原SQL语句后面增加LIMIT子句,下面,我们来看看它的执行情况。

首先,直接添加LIMIT子句后的SQL语句如下(已省略a1表的个字段和a2中的一个字段):

其执行时间如下:

大概执行了s,绝大部分都花费到Sending data上了。Sending data指的是服务器检索数据,读取数据,并将数据返回给客户端的时间。

关于上述执行结果,有以下几点需要说明:

1. 这是SQL语句多次执行后的结果,这样就可以排除结果缓存的影响,事实上,每次查询的时长都是s左右。

2. 为什么选用的是limit ,,而不是0,,这个主要是考虑到对于LIMIT子句来说,越到后面,分页的成本越高。基于此,选择了中间值来作为分页的结果。

该语句的执行计划如下:

优化后:

MySQL分页优化(mysql大分页优化)

优化的思路:

只对该表的主键进行分页,然后用返回的主键作为子查询的结果,来检索该表其它字段的值。

改写后的SQL语句如下:

其执行时间如下:

大概3s多,比第一种方案快了差不多倍,效果显著。

下面来看看其执行计划(explain extended)

总结:

1. 改写后的语句原本如下:

但MySQL报以下错误:

需再增加一个嵌套子查询,

比如这样的语句是不能正确执行的。

但是,只要你再加一层就行。如:

这样就可以绕开limit子查询的问题。 问题解决。

2. 如果想查看MySQL查询优化器等价改写后的SQL语句,可首先通过explain extended得到具体的执行计划,然后通过show warnings查看。

具体在本例中,等价改写后的SQL语句如下:

与设想中的执行顺序一致~

3. 如何查看MySQL语句各步骤的执行时间。

标签: mysql大分页优化

本文链接地址:https://www.jiuchutong.com/biancheng/321303.html 转载请保留说明!

上一篇:快速实现MySQL的部署以及一机多实例部署(mysql简单操作)

下一篇:如何恢复MySQL主从数据一致性(mysql怎么恢复数据)

  • 动迁补偿款怎么算
  • 库存现金冲销
  • 租赁设备损毁赔偿案例
  • 预付款类发票可抵扣吗
  • 5个点的税点
  • 小规模公司初期注销流程
  • 商贸公司营业执照范围
  • 职工在异地住院怎么报销
  • 母公司与子公司之间的资金往来
  • 农业水费管理使用办法
  • 小规模纳税人税收优惠政策
  • 免税农产品收入是否计入30万销售额
  • 小规模纳税人代理记账流程
  • 取得不动产时的作价
  • 学校应该缴纳的税
  • 豪华小汽车消费税
  • 开票3个点13个点是什么意思
  • 无形资产管理的基本流程包括无形资产的
  • 额外收入如何避税
  • 企业所得税弥补
  • 红字发票是否需要盖发票章
  • 开发成本开发间接费用是哪类账户
  • 多用途预付卡发卡方账务处理
  • 招待费进项税额转出在申报表
  • 苹果macmimi
  • 为离职员工代缴社保 论
  • unity默认存储路径
  • 银河麒麟操作系统价格
  • 代开房租的税点计入什么科目?
  • 交际应酬费可以抵扣吗
  • 住房公积金怎么补缴费
  • 小程序常见问题
  • 员工出差机票计入什么科目
  • vue传值inject
  • php接收post数据并查询数据库
  • ChatGPT全面升级,GPT4支持多模态数据。
  • convert convert
  • 水果发票税率是几个点
  • java的范式
  • 微擎最新破解版
  • 坏账的计算公式
  • 中介公司服务范围都有哪些
  • 差额征税可以开专票抵扣吗
  • 印花税购销合同改为买卖合同
  • 建筑业增值税是什么意思
  • 减免的企业所得税怎么做账
  • 跨境电商财务如何报税
  • 公司购买房子如何交税
  • 政府代建工程
  • 去年多计提的费用
  • 债务人对债权人享有
  • 有形资产有哪些科目
  • 如何做大建筑业企业
  • 原始凭证填制要点在原始凭证上书写阿拉伯数字正确的有
  • mysql远程用户登录
  • centos6.2安装教程
  • 被放弃的遗产
  • linux中df命令详解
  • debian和ubuntu server
  • Win10 Mobile首个RS2预览版14905快速版今日开始推送
  • centos安装详细
  • win7系统解决数字签名问题
  • 如何关闭win8快速启动
  • ie10变成ie8
  • win7无法更改工作组
  • jquery 多选
  • linux怎么设置
  • unity3d网络游戏开发
  • 动态修改ip
  • js新开一个窗口
  • jQuery插件是什么
  • css中position的用法
  • 代收国税地税收入
  • 以房产作价投资入股如何处理
  • 公司买水果怎么开票
  • 财产租赁包括哪些财产
  • 税务协查工作亮点
  • 收购烟叶多少公斤违法
  • 浪潮报销软件安装
  • 云南国税申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设