如何优化分页查询?
select * from t limit 20000000,10
对于没有索引的表来说,执行这个sql语句很非常的耗时而且效率超低,因为我们要在表中排序并找到
20000010条记录,并且在找完之后仅仅返回10条数据(可以想象一下在没有索引的情况下,需要回表多少次,需要进行多少次 随机IO)
下面的优化的前提是存在索引
优化一:
将这10条数据现根据索引单独查出来,然后在和原表进行关联查询
select * from t t1,(select id from t limit 20000000,10) t2 where t1.id=t2.id
优化二:如果我们的表中
存在主键自增
select * from t where id>20000000 limit 10
上面这两种优化是基于存在索引的情况的,如果存在索引相对之前是非常快的,因为根据索引我们很快就可以判断出 20000000 条数据