海量数据分页limit,解决思路
来源:互联网 发布:tv域名能备案吗 编辑:程序博客网 时间:2024/06/08 05:09
朋友提出一个sql语句优化的问题,limit N,M,在N数值较大,N很小的时候,例如limit 100000, 20的情况下,MySQL的性能很低。
然后上网搜索了一下相关的解决思路,怕自己忘记,在这里记录一下
mysql的性能低是因为数据库要去扫描N+M条记录,然后又要放弃之前N条记录,开销很大
解决思略:
1、前端加缓存,或者其他方式,减少落到库的查询操作,例如某些系统中数据在搜索引擎中有备份的,可以用es等进行搜索
2、使用延迟关联,即先通用limit得到需要数据的索引字段,然后再通过原表和索引字段关联获得需要数据
select a.* from a,(select id from table_1 where is_deleted='N' limit 100000,20) b where a.id = b.id
3、从业务上实现,不分页如此多,例如只能分页前100页,后面的不允许再查了
4、不使用limit N,M,而是使用limit N,即将offset转化为where条件。
select id,namefrom tableName limit5000000,10;select id,namefrom tableNamewhere id>5000000 limit 10;
但是这种有有一点问题,就是有些数据会做删除,不管是逻辑删除还是物理删除,有时候筛选会去掉这种删除字段,这个时候光自增长的id是不能准确定位的,这个时候可以传入一个参数,即上次查询结果的最后一个数据的id,然后往前往后追溯
select id,name from tableName where id>16838 and is_deleted='N' limit 10;
参考链接:
1、http://blog.itpub.net/22664653/viewspace-1176153/
2、http://www.cnblogs.com/shangzekai/p/4715408.html
0 0
- 海量数据分页limit,解决思路
- 海量数据的解决思路
- 海量数据解决思路之Hash算法
- 海量数据解决思路之BitMap
- 海量数据解决思路之BitMap
- 海量数据解决思路之BitMap
- 海量数据解题思路
- [NoSQL] 海量数据解决思路之Hash算法
- [NoSQL] 海量数据解决思路之Hash算法
- [NoSQL] 海量数据解决思路之Hash算法
- 延迟关联(解决海量数据分页优化)
- 海量数据分页
- 海量数据分页
- 海量数据分页
- 海量数据的分页
- 海量数据分页查询
- BitMap--解决海量数据
- 海量数据分页存储过程
- Openstack基础简单笔记(1)
- Hadoop2.x YARN架构
- IDEA工具开发中部署工程常见问题
- rails loop
- DZ相关知识
- 海量数据分页limit,解决思路
- 深入Web请求过程
- MyEclipse连接Mysql
- 冒泡排序函数
- rails 验证
- 蓝桥杯-Multithreading(java)
- OpenCV检测篇——猫脸检测
- java实现Prim算法
- tecent