位置: 编程技术 - 正文

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怎么恢复数据)

  • 一般纳税人公账转法人私账
  • 什么情况需要预缴增值税
  • 由商场代收营业费怎么算
  • 小规模可以开红网吗
  • 存货售出后是否含税
  • 会计核算不实
  • 长期股权投资权益法下初始投资成本
  • 库存商品进项税额转出分录怎么写
  • 财产租赁所得个人所得税计算方法2020
  • 企业每个月都要关账吗
  • 企事业承包承租经营所得税率是多少
  • 同一地级行政区怎么划分
  • 个体户开发票要交税吗
  • 跨年多计提折旧的账务处理
  • 速动资产不包括存货和预付账款
  • 专用发票可以抵扣吗
  • 社保银行扣款未扣怎么办
  • 企业收取的会员费当无法继续提供服务能退吗?
  • 企业房租收入如何申报
  • 民非提供服务收到的现金怎么算
  • 工程机械租赁公司图片
  • 贷款计入哪个会计科目
  • 递延性负债
  • 进程aissca.exe
  • win7系统无法启动怎么处理
  • 企业发生的利得和损失应计入所有者权益
  • 不带息票据按面值入账
  • 二手车销售发票的开具怎么处理?
  • 怎么开通公众号微信公众平台
  • 珠宝行业会计核算内容
  • thinkphp ide
  • ICLR2023《Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series》
  • 固定资产毁损应该填制什么凭证
  • 印花税申报时间填错了怎么处理?
  • 小规模纳税人开普票要交税吗
  • 固定资产的装修费计入固定资产吗
  • 非货币性资产交换准则
  • 总分机构纳税
  • 原材料结转成本有几种方法
  • 预缴增值税款怎么入账
  • 公司为员工报销怎么做账
  • 会计和外贸哪个工作强度大
  • 劳务报酬支出怎么算
  • 实收资本变更登记
  • 电商账务怎么做
  • 关联方资金往来是否收取利息
  • 电子发票已开出客户退款会计处理是怎样的?
  • 结转固定资产清理损益的账务处理
  • 对公账户进出账常识
  • 低值易耗品怎么做账
  • 一般纳税人销售使用过的固定资产
  • mysql优化实战
  • 一些有用的sql语句是什么
  • window10系统主题
  • redhat网卡配置文件
  • windows server2012安装完没有桌面
  • 硬盘xp系统
  • 虚拟机打不开linux
  • win7如何关闭ie浏览器
  • win7 64位旗舰版系统联网时提示0x80070002的解决方法
  • node.js jquery
  • android图片布局
  • 控制角色一致性的5个方法
  • nodejs的理解
  • 使用scp获取远程linux服务器上的文件 linux远程拷贝文件
  • nodejs一键安装
  • unity sliced
  • jquery点击a标签
  • javascript例题
  • 一不小心做错事男朋友就开始说我
  • js 工作流
  • 2023年四川职工医保缴费基数
  • 港口的码头用地
  • 一般纳税人服务费是几个点
  • 怎样加入广东省民间文艺家协会
  • 广汽传祺gs52013款2.0自动怎么样
  • 电子税务局使用率低的原因
  • 苏州吴江区事业单位2023成绩公布
  • 北京国税查询发票真伪查询系统
  • 法治税务示范基地枫桥
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设