聊聊优化分页查询带来的思考

近期在优化项目的分页查询功能,总结了一下自己的心得。

减少回表

在主表上查询过滤,同时开启limit分页并返回主键,再次关联主表,减少回表的次数。伪代码如下:

SELECT o1.* FROM orders o1
INNER JOIN (SELECT id FROM orders WHERE sn='XD12345678' LIMIT 10000,10) o2
ON o1.id = o2.id;

通过预先的处理数据:

  1. 筛选数据
  2. 提前分页丢弃数据

极大的减少了后续的数据处理。参考:避免写出致命 SQL,搞懂 MySQL 回表[1]

谓词下推

各业务表预先筛选过滤部分数据,再与主表关联查询,即提前将谓词下推到业务表,筛选过滤数据,再与主表关联查询,降低数据传输与数据计算。

总结

处理流图如下:

聊聊优化分页查询带来的思考

其实整个的分析来看,其思路与Doris的查询优化等如出一辙。只是说,目前的业务更偏向于单数据库而已,而Doris是分布式的存储。可参考:

聊聊分布式 SQL 数据库Doris(五)[2]

聊聊分布式 SQL 数据库Doris(七)[3]

参考资料
[1]

避免写出致命 SQL,搞懂 MySQL 回表: https://juejin.cn/post/6938357172791148575

[2]

聊聊分布式 SQL 数据库Doris(五): https://www.cnblogs.com/zhiyong-ITNote/p/17858739.html

[3]

聊聊分布式 SQL 数据库Doris(七): https://www.cnblogs.com/zhiyong-ITNote/p/17861747.html


原文始发于微信公众号(阿郎小哥的随笔驿站):聊聊优化分页查询带来的思考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/244124.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!