Mysql分页,数据量大时limit优化

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左右,后者比前者优数倍


猜你喜欢

转载自blog.csdn.net/u010825931/article/details/80041620