SQL优化-大数据量分页优化
百万数据量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到找到聚簇索引,优化后则减少了寻找聚簇索引位置的时间;
最新文章
- java 反射的应用 以及通过反射 用到的工厂模式
- 给自己立下一个巨大的flag
- C# Gabbage Collecting System
- supervisor运行golang守护进程
- Linux Java 环境变量设置
- Ruby网络服务
- 白盒测试之gmock入门篇
- PowerShell查询sql server
- 五、Socket之UDP异步传输文件-实现传输中取消传送
- 《用chsh选择shell》-linux命令五分钟系列之十二
- [转]Delphi导出Excel的设置操作
- 在Tableau中自定义版块地图 (Polygon)
- 1、第一个Struts2程序
- 【python】函数参数关键字索引、参数指定默认值、搜集参数
- git教程——安装配置
- HTML - form (转)
- 关于get和post请求的区别
- shiro 分布式缓存用户信息
- Android SDK的下载与安装
- 使用 Immutable Subject 来驱动 Angular 应用