百万数据量SQL,在进行分页查询时会出现性能问题,例如我们使用PageHelper时,由于分页查询时,PageHelper会拦截查询的语句会进行两个步骤

  1.添加 select count(*)from (原查询sql) ,用于统计查询的总数

  2.拼接 limit startPage,number 用于分页

  

  此时有两个问题

    第一个问题是:

      用于统计的 select count(*)from (原查询sql)在数据量大时速度慢

    第二个问题时:

      limit startPage,number 在大数据量时效率低

  

  解决方案:

    第一个问题:

      在数据量过大时,不使用分页插件PageHelper,select count(*)from (原查询sql)固定返回一个固定值给到前端,例如千万级数据,固定返回1千万

    第二个问题:

      在数据量过大时,不使用分页插件PageHelper ,使用join或者子查询去优化

      例如 id为主键,name为非唯一索引

        优化前:

        select id,name,brand from table where name=‘xxx’ limit 100000,10

        优化后:

        select aa.id,name,brand from table inner join (select id from table bb where name ='xxx' limit 100000,10) bb where aa.id=bb.id

        原因是解决

          非聚簇索引的叶子节点是聚簇索引的节点值,聚簇索引的叶子节点值才是数据的物理位置,

        优化前会花费大量的随机IO到找到聚簇索引,优化后则减少了寻找聚簇索引位置的时间;

最新文章

  1. java 反射的应用 以及通过反射 用到的工厂模式
  2. 给自己立下一个巨大的flag
  3. C# Gabbage Collecting System
  4. supervisor运行golang守护进程
  5. Linux Java 环境变量设置
  6. Ruby网络服务
  7. 白盒测试之gmock入门篇
  8. PowerShell查询sql server
  9. 五、Socket之UDP异步传输文件-实现传输中取消传送
  10. 《用chsh选择shell》-linux命令五分钟系列之十二
  11. [转]Delphi导出Excel的设置操作
  12. 在Tableau中自定义版块地图 (Polygon)
  13. 1、第一个Struts2程序
  14. 【python】函数参数关键字索引、参数指定默认值、搜集参数
  15. git教程——安装配置
  16. HTML - form (转)
  17. 关于get和post请求的区别
  18. shiro 分布式缓存用户信息
  19. Android SDK的下载与安装
  20. 使用 Immutable Subject 来驱动 Angular 应用

热门文章

  1. vue关于导航守卫的几种应用场景
  2. 基于CefSharp开发浏览器(八)浏览器收藏夹栏
  3. 权益满满 | PGConf.Asia2020大会诚邀赞助商!携手走向更大世界!
  4. C++多文件结构和预编译命令
  5. 通过golang小案例,了解golang程序常见机制
  6. CodeBlocks的安装配置以及使用教程
  7. C# 应用 - 封装类访问 Mysql 数据库
  8. 为什么是InfluxDB | 写在《InfluxDB原理和实战》出版之际
  9. 让JS代码Level提升的忍者秘籍(实用)
  10. windows如何上传ios app到appstore