分页方案
# 分页性能相关方案
# 方案一:(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;
##################################################################################################
来源:CSDN
作者:爱喝水的qdy
链接:https://blog.csdn.net/qq_32617703/article/details/103570275