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;

What

References