MySQL分页查询原理

MySQL并不是跳过offset行,而是取offset+N行,然后返回放弃前offset行,返回N行,那当offset特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行SQL改写。【阿里巴巴JAVA开发手册】

// 查询样例,查询不同的条数效率完全不一样

select * from employees limit 10000,10; ## 耗时:0.007s

select * from employees limit 100000,10; ## 耗时:0.031s

select * from employees limit 1000000,10; ## 耗时:0.42s

select * from employees limit 3000000,10; ## 耗时:1.2s

分页查询优化方式

1.基于主键ID实现查询优化分页查询优化

EXPLAIN select * from employees where id>3000003 limit 10; ##耗时:0.0005s

通过id定位到3000003数据,然后通过offset值取得想要的结果,效率提高不是一点点。

原理:

a、先查询到主键ID的索引

b、通过索引ID关联employees表

优化缺陷:如果主键不是自增长的(如uuid方式),则此方法失效。

2.基于主键ID实现查询优化分页查询优化

select * from employees e inner join (select id from employees limit 3000000,10) ed on e.id = ed.id; ##耗时:0.69s

原理:select id from employees limit 3000000,10语句直接走索引,快速定位所需要的id,然后通过id回表查询,比原先的语句少了很多的数据,而且走索引,速度会快很多。

3.分表分库

尽管上面两种方法可以优化查询的速度,但数据表的数据量超过500W的时候,还是建议使用分表分库,将数据拆分到不同的表中,减少数据行和索引的量也会大幅度提高查询效率。

mysql uuid分页优化_MySQL性能优化之分页查询优化相关推荐

  1. mysql not in优化_MySQL性能优化 — 实践篇2

    点赞再看,养成习惯,微信搜一搜[一角钱小助手]关注更多原创技术文章.本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 MySQL索引底层数据结构与算法 ...

  2. mysql效率优化_MySQL性能优化的最佳12条经验

    数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时 ...

  3. Mysql删除语句优化_MySQL性能优化之常用SQL语句优化

    SQL性能优化的目标:至少要达到range级别,要求是ref级别,consts最高.[阿里巴巴JAVA开发手册] 说明: 1).consts单表中最多只有一个匹配行(主键/唯一索引),在优化阶段即可读 ...

  4. mysql 代码怎么优化_MySQL 性能优化的简略办法

    mysql 性能优化的简单办法 优化数据库最核心的实际上就是配置参数的调整.本文通过一个简单的参数调整,实现了对拥有一个几十万行表的 group by 优化的例子.通过这个简单的调整,数据库性能有了突 ...

  5. mysql 阿里云 优化_MySQL性能优化速记

    总结自<MySQL 5.7从入门到精通(视频教学版)>刘增杰编著. 优化简介 MySQL数据库优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度. 在MySQL中,可 ...

  6. mysql 代码怎么优化_Mysql性能优化

    1,SQL语句中in包含的值不应过多 Mysql对于in做了相应的优化,即将in中的常量全部存储在一个数组里面,而这个数组是排好序的.但是对于数值较多,产生的消耗也比较大的: 例如: select i ...

  7. mysql 字符串索引 优化_MySQL性能优化之索引调优实战

    索引失效场景或使用注意事项 a.索引无法存储null值,所以建议都给默认值 b.如果条件中有or,即使使用了索引条件也不起作用,所以尽量少用or 如果想使用or,又让索引生效,只能将or的每个列上加上 ...

  8. mysql sql 一部分记录_MySQL性能优化实践(很全面,值得收藏)

    一 题记 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语 ...

  9. mysql 8 配置参数优化_MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

最新文章

  1. 报名 | 清华医工科研服务平台发布会暨医工结合科研基金成立大会
  2. kail linux安装软件提示“无法定位软件包”解决方法
  3. [SDOI2009]HH去散步(矩阵)
  4. Flash 组件应用与开发
  5. SAP JAM活跃度统计
  6. ​Python中面向对象的编程
  7. oracle 合并函数
  8. 机构研究显示iPhone 12 Pro Max是美国最受欢迎5G手机
  9. Linux 端口占用情况查看
  10. vue同时导入多个组件方法
  11. HTML5入门 之下拉菜单
  12. 【计算视觉】人体姿态识别研究综述(详细归纳!)
  13. win10删除多余账户_Win10系统如何删除账户?Win10系统删除账户的方法
  14. 使用yaml文件指定 kata 安全容器配置相关参数
  15. 深入理解Plasma(四)Plasma Cash
  16. 旅行青蛙(旅かえる)的最全攻略(不懂日语的可以看看)
  17. 如何成为一个原画场景大师
  18. 虚拟路由器冗余协议vrrp原理的理解
  19. pat甲级考试报名费_每日一感——记第一次PAT甲级考试之感想
  20. 什么软件测试鞋子真假,教你5招辨别真假Yeezy Boost鞋,真真假假你图啥?

热门文章

  1. 苹果虚拟home键_苹果手机几个实用小技巧,相见恨晚,快试试你的手机!
  2. buctoj-2022寒假集训2
  3. 树莓派安装后中文设置及输入法安装
  4. 做容器就要做“专”!云宏 Rancher联合解决方案WinGarden2.0容器云平台正式发布!
  5. Chromium为视频标签video全屏播放的过程分析
  6. 在树莓派上安装Ubuntu
  7. 玩客云pc端_玩客云下载 玩客云电脑版下载
  8. SANGFOR SCSA——linux系统基础
  9. 生成器进阶--yield from
  10. 【阅读笔记】《深度学习》第一章:引言