LIMIT M,N分页性能优化方案

利用子查询优化

说明:

MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,那当 offset 特别大的时候,此时使用limit m,n效率就非常的低下。想要提升性能要么控制返回的总页数,要么对超过特定阈值的页数进行 SQL 改写。

正例:

先快速定位需要获取的 id 段,然后再关联:

SELECT a.* FROM 表_1 a, (select id from 表_1 where 条件 LIMIT 100000,20 ) b where a.id=b.id

select id from 表_1 where 条件 LIMIT 100000,20可以利用覆盖索引快速查询出id,然后在根据id回表查询20个数据的具体值,这样就能大量的减少数据库的IO,从而大幅提升性能。

你可能感兴趣的:(MySql)