Why
How
分页
逻辑分页(假分页)
在内存中分页,利用 RowBounds 限制返回数据,在用到的时候再回 DB 滚动查询
物理分页
select *
from table
where true
limit 20 offset 10
现有框架:
Mybatis 拦截器
拦截到 select
语句, 动态拼接分页的关键字
如何更快?
id
走索引 > ==limit + last id
(游标分页)== > offset + limit
(传统分页) > rownum
(行号分页)
select * from table where id > 10000 order by id limit 20; -- 遇到删除就寄了
select * from table where id > 9876 order by id limit 20; -- 理论最优
select * from table where true order by id limit 20 offset 10; -- 传统
select * from table where rownum > 1000 order by id limit 20;