栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Mysql大数据量分页优化

Mysql大数据量分页优化

MySQL分页 (limit xx,xx)并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,那当offset特别大的时候,效率就非常的低下。
优化思路:
控制返回的总页数
对超过特定阈值的页数进行 SQL改写。

普通sql
SELECt count(id) FROM `alarm_base` 


SELECt * FROM alarm_base limit 9000000,25
1、使用索引覆盖+子查询优化
SELECt * FROM alarm_base WHERe id >=(SELECt id FROM alarm_base limit 9000000,1)

ORDER BY id limit 25
2、起始位置重定义
# 前提 1:(默认ID自增生成、升序排列)
# id> (pageIndex-1)*pageSize

# 前提二 2:(记住上次查找结果的主键位置,但只能一页一页分,跳页会有问题)
# 两个前提满足其一即可使用
# sql
SELECt * FROM alarm_base WHERe id>=2300316 limit 25
3、利用延迟关联或者子查询优化超多分页场景。
正例:先快速定位需要获取的 id 段,然后再关联:
 SELECt t1.* FROM 表 as t1, (select id from 表 where 条件 LIMIT 100000,20 ) as t2 where t1.id=t2.id

改写前:

改写后:

4、降级策略
配置limit的偏移量和获取数一个最大值,超过这个最大值,就返回空数据(超过这个值你已经不是在分页了,而是在刷数据了,如果确认要找数据,
应该输入合适条件来缩小范围,而不是一页一页分页。)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号