利用延迟关联或者子查询优化超多分页场景

根据阿里巴巴JAVA开发手册

【推荐】利用延迟关联或者子查询优化超多分页场景。
说明:MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回
N 行,那当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过
特定阈值的页数进行 SQL 改写。
正例:先快速定位需要获取的 id 段,然后再关联:
SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 LIMIT 100000,20 ) b where a.id=b.id

MySQL 分页并不是跳过 offset 行,而是取 offset +N 行,然后返回放弃前 offset 行,返回
N 行,所以当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过
特定阈值的页数进行 SQL 改写。

例(先快速定位需要获取的ID范围):
SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 LIMIT 100000,20 ) b where a.id=b.id

你可能感兴趣的:(Mysql)