关于mysql分页查询大数据量offset过大的查询速度变慢


-- 以该查询为例
select * from table where field='' limit n,m

假设该查询走了索引,该查询会查询出前n + 1条数据,根据条件去掉前n条,如果n太大,则会有多次回表操作导致查询效率降低

优化方式

如果单表数据量比较大,可通过减少回表次数提高效率,所以可以对上面的查询语句做下简单的修改

select * from table a inner join (select id from table where where field='' limit n,m) b on  a.id=b.id

如果每页分页数据量不大,也可以用子查询,如果m值太大,不建议使用,可能会导致索引失效

select * from table where id in (select id from (select id from table where where field='' limit n,m) b)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM