论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
SQL-Server
›
MySQL深度分页题目深度解析与办理方案
MySQL深度分页题目深度解析与办理方案
灌篮少年
金牌会员
|
2024-7-28 22:51:01
|
显示全部楼层
|
阅读模式
楼主
主题
972
|
帖子
972
|
积分
2916
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
弁言
在处理包含数百万条记录的大型数据表时,利用MySQL的LIMIT进行分页查询是一种常见的做法。然而,当哀求的数据位于效果集的深层时,即所谓的“深度分页”,查询性能会急剧下降。本文将深入探究深度分页题目的原因,并提供几种有效的办理方案。
深度分页题目的原因
全表扫描
:当OFFSET值较大时,MySQL可能会选择实行全表扫描而不是利用索引。
回表操纵
:在利用二级索引时,需要通过索引回表到主键索引去检索完整的行数据,这增长了查询的负担。
办理方案
方案一:利用主键索引优化
假如主键是自增的,可以通过主键进行优化,示例SQL如下:
SELECT * FROM table_name WHERE id > [last_id] ORDER BY id LIMIT [page_size];
复制代码
这里的[last_id]是上一页的最后一条记录的ID。
方案二:利用子查询优化
通过子查询先定位到接近目标效果的位置,然后外层查询获取具体数据:
SELECT * FROM table_name
WHERE id >= (
SELECT id FROM table_name
WHERE some_column = 'some_value'
ORDER BY id DESC
LIMIT 1 OFFSET [offset]
)
ORDER BY id ASC
LIMIT [page_size];
复制代码
方案三:利用INNER JOIN优化
与子查询优化类似,利用INNER JOIN来镌汰回表次数:
SELECT a.*
FROM table_name a
INNER JOIN (
SELECT id FROM table_name
WHERE some_column = 'some_value'
ORDER BY id DESC
LIMIT [offset], [page_size]
) b ON a.id = b.id;
复制代码
方案四:利用搜刮引擎
对于极深的分页,可以思量利用Elasticsearch等搜刮引擎来处理分页查询。
最佳实践
限制分页大小
:克制利用过大的OFFSET和LIMIT值。
利用覆盖索引
:只管利用覆盖索引以镌汰回表操纵。
思量利用游标
:在某些情况下,利用游标可能是更好的选择。
结论
深度分页是一个复杂的题目,需要根据具体的数据模式和查询需求来选择最符合的办理方案。通过上述方案,可以明显提高深度分页查询的性能。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
灌篮少年
金牌会员
这个人很懒什么都没写!
楼主热帖
【靶场】THM-Pickle Rick-练习
【WinUI3】ListView / GridView 学习总 ...
每日算法之二叉搜索树的后序遍历序列 ...
Dubbo原理解析(非常透彻)
SAP WM高阶之下架策略M(Small Large Qu ...
【邂逅Django】——(一)创建项目 ...
JDBC核心技术
线程池
K3S系列文章-使用AutoK3s在腾讯云上安 ...
Arrya类常见方法学习
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
移动端开发
Mysql
容器及微服务
分布式数据库
快速回复
返回顶部
返回列表