暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
处理大分页
601
1页
0次
2020-06-26
5墨值下载
两个方向上来解决
.
数据库层面
,
这也是我们主要集中关注的
(
虽然收效没那么大
),
类似于
select * from table where age > 20 limit 1000000,10
这种查询其实也是有可以优化的余
地的
.
这条语句需要
load1000000
数据然后基本上全部丢弃
,
只取
10
条当然比较
.
当时我们
select * from table where id in (select id from table where age > 20 limit
1000000,10).
这样虽然
load
了一百万的数
,
但是由于索引覆盖
,
要查询的所有字段都在
,
.
ID
,
select * from table where id >
1000000 limit 10,
,
,
,
load
的数据
.
从需求的角度减少这种请求…主要是不做类似的需求
(
直接跳转到几百万页之后的具体某一
.
只允许逐页查看或者按照给定的路线走
,
这样可预测
,
可缓存
)
以及防止
ID
泄漏且连续被人
恶意攻击
.
解决超大分页
,
其实主要是靠缓存
,
可预测性的提前查到内容
,
缓存至
redis
k-V
数据库
,
接返回即可
.
【推荐】利用延迟关联或者子查询优化超多分页场景。
MySQL
并不是跳过
o&set
行,而是取
o&set+N
行,然后返回放弃前
o&set
行,返回
N
行,那
o&set
特别的时,效就非的低,要控制回的页数要么超过定阈
值的页数进行
SQL
改写。
正例:先快速定位需要获取的
id
段,然后再关联:
SELECT a.* FROM
1 a, (select id from
1 where
条件
LIMIT 100000,20 ) b where a.id=b.id
of 1
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜