位置: 编程技术 - 正文

MySQL中分页优化的实例详解(mysql uuid分页优化)

编辑:rootadmin

推荐整理分享MySQL中分页优化的实例详解(mysql uuid分页优化),希望有所帮助,仅作参考,欢迎阅读内容。

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

通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询。例如下面这个SQL:

或者像下面这个不带任何条件的分页SQL:

一般而言,分页SQL的耗时随着 start 值的增加而急剧增加,我们来看下面这2个不同起始值的分页SQL执行耗时:

可以看到,随着分页数量的增加,SQL查询耗时也有数十倍增加,显然不科学。今天我们就来分析下,如何能优化这个分页方案。 一般滴,想要优化分页的终极方案就是:没有分页,哈哈哈~~~,不要说我讲废话,确实如此,可以把分页算法交给Sphinx、Lucence等第三方解决方案,没必要让MySQL来做它不擅长的事情。 当然了,有小伙伴说,用第三方太麻烦了,我们就想用MySQL来做这个分页,咋办呢?莫急,且待我们慢慢分析,先看下表DDL、数据量、查询SQL的执行计划等信息:

可以看到,虽然通过主键索引进行扫描了,但第二个SQL需要扫描的记录数太大了,而且需要先扫描约条记录,然后再根据排序结果取条记录,这肯定是非常慢了。 针对这种情况,我们的优化思路就比较清晰了,有两点:

1、尽可能从索引中直接获取数据,避免或减少直接扫描行数据的频率2、尽可能减少扫描的记录数,也就是先确定起始的范围,再往后取N条记录即可

MySQL中分页优化的实例详解(mysql uuid分页优化)

据此,我们有两种相应的改写方法:子查询、表连接,即下面这样的:

#采用子查询的方式优化,在子查询里先从索引获取到最大id,然后倒序排,再取行结果集#注意这里采用了2次倒序排,因此在取LIMIT的start值时,比原来的值加了,即,否则结果将和原来的不一致

然后我们来对比下这2个优化后的新SQL执行时间:

我们再来看一个不带过滤条件的分页SQL对比:

至此,我们看到采用子查询或者INNER JOIN进行优化后,都有大幅度的提升,这个方法也同样适用于较小的分页,虽然LIMIT开始的 start 位置小了很多,SQL执行时间也快了很多,但采用这种方法后,带WHERE条件的分页分别能提高查询效率:.9%、.5%,不带WHERE条件的分页分别提高查询效率:.5%、.7%,各位可以自行进行测试验证。单从提升比例说,还是挺可观的,确保这些优化方法可以适用于各种分页模式,就可以从一开始就是用。 我们来看下各种场景相应的提升比例是多少:

结论:这样看就和明显了,尤其是针对大分页的情况,因此我们优先推荐使用INNER JOIN方式优化分页算法。

上述每次测试都重启mysqld实例,并且加了SQL_NO_CACHE,以保证每次都是直接数据文件或索引文件中读取。如果数据经过预热后,查询效率会一定程度提升,但但上述相应的效率提升比例还是基本一致的。

MySQL中slave监控的延迟情况分析 在MySQL复制环境中,我们通常只根据Seconds_Behind_Master的值来判断SLAVE的延迟。这么做大部分情况下尚可接受,但并不够准确,而应该考虑更多因素。首先

批量杀死MySQL连接的四种方法详解 方法一通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件,然后执行临时文件中生成的指令。mysqlselectconcat('KILL',id,';

MySQL下的RAND()优化案例分析 众所周知,在MySQL中,如果直接ORDERBYRAND()的话,效率非常差,因为会多次执行。事实上,如果等值查询也是用RAND()的话也如此,我们先来看看下面这几

标签: mysql uuid分页优化

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

上一篇:关于MySQL中savepoint语句使用时所出现的错误(关于mysql中的字符型数据下面说法正确的是)

下一篇:MySQL中slave监控的延迟情况分析(mysql官方监控工具)

  • 读懂增值税
  • 房产税如何进行税源采集
  • 遗失增值税专用发票如何处理办法
  • 税务免抵调库是什么意思
  • 税务师2022年考试成绩
  • 主营业务收入科目按其所反映的经济内容不同
  • 简易计税是否要申报个税
  • 资产负债表怎么填
  • 小规模纳税人报税前需要做什么
  • 计提坏账准备和冲减坏账准备
  • 财务报表实收资本
  • 发票未能在汇算清缴前取得怎么办?
  • 购买的包装物用什么消毒
  • 碎石需要技术吗
  • 发票一直报送中,开不了发票
  • 纳税申报方式怎么修改
  • 发生破损
  • 将自产产品无偿赠送 会计处理
  • 公司账户转入另一个公司的投资款怎么做账?
  • 企业收到供货单位提供的材料
  • 工会经费的会计分录2023
  • 公司买的油烟机可以抵扣进项税吗
  • 国债逆回购会跌吗
  • 进项税额加计抵减怎么做分录
  • 房屋维修基金怎么申请使用
  • 农村合作社收到财政拨款怎么做分录
  • linux alias永久生效
  • 电脑怎么一键返回到桌面
  • 给客户购买礼品怎么记账
  • 股东认缴和实缴不一致
  • 在建工程及时结转重要性
  • php字符串操作函数
  • PHP:session_regenerate_id()的用法_Session函数
  • 冲回上年多提的费用会计分录
  • 代销商品受托方怎么做账
  • 跨年度广告费需不需要摊销
  • 44岁就没有月经了正常吗
  • 出口退税备案是代理的需要主办会计身份证复印件吗
  • 在售楼部帮客户卖房犯法吗
  • percona-toolkit对MySQL的复制和监控类操作教程
  • 把mysql移到其他盘
  • 运输费用会计
  • 固定资产不计提残值可以吗
  • 纳税申报表上的销售额是不含税的吗
  • sql查询语句怎么用
  • 销售成品油的税率
  • 高危险工作人员有什么意外险
  • 抵账的房子怎么办理房产证
  • 外经证过期了怎样核销
  • 内部产生的商誉应确认为无形资产
  • 物业安装摄像头的规定
  • 12月计提的工资没有发完怎么做账
  • 进行长期股权投资的目的
  • 购买的材料入库属于什么会计科目
  • 怎么辨别定额发票是什么项目啊
  • 个体户4年不注销有事吗
  • 如何登录网络?
  • mysql5.7.24安装配置教程
  • 将Reporting services的RDL文件拷贝到另外一台机器时报Data at the root level is invalid的解决方法
  • 杭州租房补贴社保断缴影响
  • windowsxp桌面文件在哪个文件夹
  • 自动保存怎么恢复
  • win 10文件
  • win10开机出现microsoft
  • win10如何移动应用程序
  • windows10预览版是什么
  • ajax 编码
  • cocos2dx开发的游戏
  • dos的for用法
  • android 蓝牙 驱动 适配 sdio rk
  • jQuery与Ajax以及序列化
  • 安卓手机管家推荐
  • Android通知栏点击打开安装
  • javascript数据结构与算法
  • 安卓小项目实战软件
  • 电子税务局怎么删除办税员
  • 增值税留底抵欠如何处理
  • 家长进校园给孩子讲法律课
  • 税收筹划与避税的性质相同
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设