MySQL学习之分页方案

分页方案

# 分页性能相关方案

# 方案一:(O(∩_∩)O)
不让看,例如博客园

# 方案二:
# 运用覆盖索引的方式去索引表进行扫描:(这种方式并没有快多少)
select
    *
from
    userinfo
where
    userinfo.uid
in
(select uid from userinfo limit 700000, 10)# 方案三:(如果想实现跳转,那么基于数据库来实现不方便,可以基于其他形式例如缓存机制实现)
# 做记录,记录当前页的最大ID和最小ID
# max_id
# min_id
# 形式一:只有上一页、下一页
# 下一页:
select * from userinfo where uid > 700000 / max_id limit 10;
# 上一页:
select
    *
from
    (select * from userinfo where uid < 700001 / min_id order by uid desc limit 10) as ReversedLastPage
order by
    ReversedLastPage.uid asc;

# 注意:between and 如果在uid都是连续的情况下,那是最好的啦。但uid不一定连续。

# 形式二:上一页 192 193 ... [196] 197 198 199 下一页
# 假设,当前页在196, 想跳转到199, 一页只有10条数据
# 思路:计算199与196相差数据的数目,然后倒序,取最后10条的uid
199 - 196 = 3
select
    *
from
    userinfo
where
    userinfo.uid
in (
select
    UID.uid
from
(select AmongData.uid from (select uid from userinfo where uid > 当前页最大值 limit 每页数据 * [页码-当前页])
as AmongData order by AmongData.uid desc limit 10) as UID order by UID.uid asc)
order by userinfo.uid asc;

##################################################################################################
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值