limit基本格式
查询第1条到第10条的数据的sql是:
1 | select * from table limit 0,10; |
对应我们的需求就是查询第一页的数据:
1 | select * from table limit (1-1)*10,10; |
从上面的分析我们可以得出分页sql的格式是:
1 | select * from table limit (start-1)*limit,limit; |
其中start是页码,limit是每页显示的条数。
建立主键或者唯一索引
在数据量较小时使用 limit 进行数据分页在性能上不会有明显的缓慢,当数据量达到万级到百万级时,SQL 的语句的性能会影响数据的返回。这时需要利用主键或者唯一索引进行数据分页。
假设主键或者唯一索引为 id。
select * from table where id > (pageNo-1)*pageSize limit pageSize;
基于数据再排序
当需要返回的信息为顺序或者倒序时,对上面的语句基于数据再排序。
order by asc/desc,默认为 asc (顺序)
例:返回的数据按照 id 顺序进行排列
select * from table where demo_id > (pageNo-1)*pageSize order by demo_id limit pageSize;