方法一
直接使用原生分页语句 SELECT * FROM 表名称 LIMIT M,N
适用范围:表数据量较少(百/千级)
缺点:会全表扫描,速度慢,不适合大量数据。而且返回结果不稳定,对于相同的一个sql,有时候返回的是1,2,3,有时候返回的是2,1,3。所以这种分页查询一般适用于数据量较少的表,而且要带上order by,防止相同的两次查询返回的结果不一致
方法二
利用主键SELECT * FROM 表名称 where id>M limit n;
但是结果不一定是按主键排序的,有时候会漏掉数据,因此M一般是上一次结果集的最大值,但是如果不是id不是唯一的,也可能还是会漏掉数据。比如上次查询结果集最大的id是100,但是id=100的可能有多条,上次没有取完。下次 id>100 limit n的时候就漏掉了还没取到的id=100的数据。所以一般用唯一索引
方法三
利用索引再排序select * from 表名称 where id > M order by id asc limit n;
方法四
先利用索引,对索引进行分页查询,然后根据索引使用in查询。
例如先只分页查查id,因为id是索引,之后查索引,会比较快,然后根据id取查数据。
mysql索引相关的可用看我的另外一篇文章mysql数据库索引结构及算法原理