limit 基本实现方式

  一般情况下,客户端通过传递 pageNo(页码)、pageSize(每页条数)两个参数去分页查询数据库中的数据,在数据量较小(元组百/千级)时使用 MySQL自带的 limit 来解决这个问题:

收到客户端{pageNo:1,pagesize:10}

select * from table limit (pageNo-1) *pageSize, pageSize;

收到客户端{pageNo:5,pageSize:30}

select * from table limit (pageNo-1)*pageSize,pageSize;

建立主键或者唯一索引

  在数据量较小的时候简单的使用 limit 进行数据分页在性能上面不会有明显的缓慢,但是数据量达到了 万级到百万级 sql语句的性能将会影响数据的返回。这时需要利用主键或者唯一索引进行数据分页;

假设主键或者唯一索引为 good_id
收到客户端{pageNo:5,pagesize:10}
返回good_id为40到50之间的数据

select * from table where good_id > (pageNo-1)*pageSize limit pageSize; 

limit 介绍

1.语法:

limit [offset,] rows
一般是用于select语句中用以从结果集中拿出特定的一部分数据。
offset是偏移量,表示我们现在需要的数据是跳过多少行数据之后的,可以忽略;rows表示我们现在要拿多少行数据。

2.例子:

①select * from mytbl limit 10000,100
上边SQL语句表示从表mytbl中拿数据,跳过10000行之后,拿100行

②select * from mytbl limit 0,100
表示从表mytbl拿数据,跳过0行之后,拿取100行

③select * from mytbl limit 100
这条SQL跟②的效果是完全一样的,表示拿前100条数据

④为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容