Mysql分页,数据量大时limit优化
2018年04月22日 19:18:37 i翡冷翠 阅读数 361
MYSQL的优化是非常重要的。其他最常用也最需要优化的就是limit。mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。
同样是取10条数据
select * from order limit 10000,10 select * from order limit 0,10
查询耗时就不是一个数量级别的。
优化方案:首先获取到offset的id然后直接使用limit size来获取数据
1、offset比较小的时候。
select * from order limit 10000,10
Select * From order Where vid >= (Select vid From order o2 By vid limit 10,1) limit 10
前者查询时间在0.0004-0.0005之间,后者查询时间在0.0005-0.0006之间
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候。
select * from order limit 10000,10
Select * From order Where vid >= (Select vid From order o2 By vid limit 10000,1) limit 10
前者查询时间0.0187,后者查询时间0.0061左右,后者比前者优数倍