在mysql中分页需要用到limite关键字。当数据量小的时候,使用 select * from A limit n,m(n:起始行,m:每页显示的数量)不会有什么问题,但是在数据量较大的时候就会出现速度慢的问题。上面这条sql语句在分页的时候,会从表头开始扫描,直到要找的那一行,在数据量很大的时候势必会造成扫描的行数过多,这样一来,越是到后面的页数查询速度就会越慢。
优化的方法:
select * from A where id >=(select id from A order by id limit n,1) limit m; 这种方法先通过一个子查询把要分页的起始行的id拿出来,这时候肯定是会用到索引的,扫描的行数肯定也比常规的分页少,速度肯定就上去了。