【Mysql】limit千万级分页优化

Mysql数据库 2019-04-22

limit千万级分页优化

在我们平时用limit,如:

select * from A order by id limit 1,10;

这样在表数据很少的时候,看不出什么性能问题,倘若到达千万级,如:

select * from A order by id limit 10000000,10;

虽然都是只查询10记录,但是这个就性能就让人受不了了。
所以为什么当表数据很大的时候,我们还继续用持久层框架如hibernate,ibatis就会有一些性能问题,除非持久层框架对这些大数据表做过优化。

在遇见上面的情况,我们可以用另外一种语句优化,如:

select * from A where id>=(select id from a limit 10000000,1) limit 10;

确实这样快了很多,不过前提是,id字段建立了索引。也许这个还不是最优的,其实还可以这样写:

select * from A where id between 10000000 and 10000010;

这样的效率更加高。

------ 本文结束 感谢阅读 ------