Mysql 千万级数据分页优化
来源:互联网 发布:php报名源码 编辑:程序博客网 时间:2024/05/17 04:26
在使用mysql数据库查询分页时,常用查询分页 limit 在小数据量查询ok熟读非常快 ,但是在大表数据查询时候性能非常有限这和limit本身设计相关好了下面介绍几种常用limit分页查询优化方案。
首先使用储存过程向数据库中插入1000w数据,脚本如下
- DROP PROCEDURE if exists insertdata;
- CREATE PROCEDURE insertdata()
- begin
- declare yourid int;
- set yourid = 1;
- while yourid<1000001 do
- insert into student(name,age) VALUES ('ly',10);
- set yourid=yourid+1;
- end while;
- end
- call insertdata();
1000w数据脚本:
链接:http://pan.baidu.com/s/1kU9ro0Z 密码:vfqe
执行时间非常长,慢慢等待吧。
常用方案:
使用explan 差sql执行过程
- EXPLAIN SELECT SQL_NO_CACHE * from student LIMIT 90000,10;
分析:查询过程没有使用到索引
执行时间:0.038s
优化方案一:
- SELECT * from student where id>=120000 LIMIT 10;
or
- SELECT * from student where id>=(
- SELECT id from student LIMIT 130000,1
- ) LIMIT 10
or
使用到主键索引
查询时间:
0.001s
优化方案二:
第一步:
- SELECT id from student where id>=120001 LIMIT 10
第二步:
- SELECT * from student WHERE id in(120001,120002,120003,120004,120005,120006,120007,120008,120009,120010);
分析:
第一步:
第二步:
同样使用到主键索引
查询时间:0.001s+0.000s
和方案二性能差不多, 实测千万数据性能最优
优化方案三
- EXPLAIN SELECT SQL_NO_CACHE * from student INNER JOIN(SELECT id from student LIMIT 100000,10) as b using(id);
分析:
在查询id范围使用到索引
查询时间:0.026s
总结:方案一、方案二需要传递上一页最后一条数据id并且id是有序、可排序 如果id不是顺序增长可以使用 order by id 排序,方案三比较通用性能较低。
0 0
- Mysql 千万级数据分页优化
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!
- 千万级数据库查询+分页优化
- 千万级数据库分页优化
- MySQL处理千万级数据查询、分页
- MySQL处理千万级数据查询分页
- MySQL处理千万级数据查询、分页
- MySQL处理千万级数据查询分页
- MySQL处理千万级数据查询、分页
- MySQL处理千万级数据查询、分页
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)
- MySQL:MySQL处理千万级数据查询、分页
- 千万级数据量mssql分页查询优化和算法
- 千万级数据分页优化-1秒内处理完毕
- 千万级数据分页实现
- mysql百万级数据分页查询优化
- HDU5973 Game of Taking Stones (大数博弈)
- 嵌入式设备进行http socket开发流程
- Android 百叶窗图片切换效果实现
- 自定义View探究
- Git 忽略一些文件不加入版本控制
- Mysql 千万级数据分页优化
- python中try except处理程序异常的三种常用方法
- Android 学习深入之路(应用和Framework层)
- Android APK 安装包
- 接口性能测试方案
- 解决eclipse中java代码注释变成乱码的问题
- 深度揭秘ES6代理Proxy
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- Cordova