关于分页的实现,有如下几种方式:

一、直接全文limit,搜索效率低,

二、先对索引列limit,定位nid,再根据nid筛选数据,

三、首先,前端记录并返回当前页码上数据的nid,然后根据目标页和当前页信息截取部分nid索引列,定位目标页数据nid,筛选数据,

-- 功能描述:
-- 若当前页97,每页10条数据,倒叙,
-- 实现跳转:上一页 100 99 98 97 96 95 94 93 下一页,


-- 方式一:直接全局索引,
-- select * from 表名 limit (目标页码-1)*每页条数,每页条数;
-- 上一页98页,第980——970条数据
select * from tb1 limit 970,10;
-- 下一页96页,第960——950条数据
select * from tb1 limit 950,10;
-- 任选第99页,第990——980条数据
select * from tb1 limit 980,10;



-- 方式二:通过索引列查找nid,通过nid定位,取数据,
-- select * from 表名 where nid<(select nid from 表名 limit 目标页码*每页条数,1) order by nid desc limit 每页条数;
-- 上一页98页,第980——970条数据
select * from tb1 where nid<(select nid from tb1 limit 980,1) order by nid desc limit 10;
-- 下一页96页,第960——950条数据
select * from tb1 where nid<(select nid from tb1 limit 960,1) order by nid desc limit 10;
-- 任选第99页,第990——980条数据
select * from tb1 where nid<(select nid from tb1 limit 990,1) order by nid desc limit 10;



-- 方式三:前端记录并返回当前页数据nid,计算目标页数据起始nid
-- 若当前页97页的数据nid为976-965,
-- 上一页98页,第980——970条数据,
select nid from (select nid from tb1 where nid > 976 order by nid asc limit 10) as A order by nid desc limit 1,;
select * from tb1 where nid < 上面公式获得的id order by nid desc limit 10;
-- 任选第99页,99-97 = 2,
select nid from (select nid from tb1 where nid > 976 order by nid asc limit 20) as A order by nid desc limit 1,;
select * from tb1 where nid < 上面公式获得的id order by nid desc limit 10;
-- 下一页96页,第960——950条数据
select nid from (select nid from tb1 where nid < 965 order by nid desc limit 10) as A order by nid asc limit 1;
select * from tb1 where nid < 上面公式获得的id order by nid desc limit 10;
-- 任选第93页,97-93 = 4,
select nid from (select nid from tb1 where nid < 965 order by nid desc limit 30) as A order by nid asc limit 1;
select * from tb1 where nid < 上面公式获得的id order by nid desc limit 10;
pagination