分库分表后,如何解决分页查询问题?

 作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题


代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等


联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等

 释放21集全网最深ConcurrentHashMap的vip视频,复现每一行源码

回答

在进行水平分库分表后,我们可能会将一个类型的数据拆分到了多个库中的多个表中去了,比如对于订单表 t_order,为了用户端能够更加方便地查询他的订单,我们一般都会选择用户 id(uid)作为分库分表的键。虽然它方便了用户端查询,但是他给商户端和运营端带来了麻烦(不考虑其他架构的情况下),比如查询分页如何做?假如我们要执行下面这条 SQL 语句:

select * from t_order order by id asc limit 10,5;    // 查询第三页的5条数据

为了更好地演示和理解,我们只将 t_order 表拆分为两个表:t_order_1t_order_2,各自数据如下:

t_order_1 t_order_2
1808407589769134080 1808407602666618880
1808407595582439424 1808407608643502080
1808407623713636352 1808407616797229056
1808407629212368896 1808407635197640704
1808407641526845440 1808407642197934080
1808407645444325376 1808407658048208896
1808407652004216832 1808407658798989312
1808407653170233344 1808407661168771072
1808407672749244416 1808407666906578944
1808407687907459072 1808407680739393536
1808409387955322880 1808409393256923136
1808409394531991552 1808409401561645056
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值