MySQL如何使用limit方式实现分页

61次阅读
没有评论

共计 1660 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍了 MySQL 如何使用 limit 方式实现分页,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

一、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} 
select * from table where good_id   (pageNo-1) * pageSize limit pageSize; 
–返回 good_id 为 40 到 50 之间的数据 

三、基于数据再排序

当需要返回的信息为顺序或者倒序时,对上面的语句基于数据再排序。order by ASC/DESC 顺序或倒序 默认为顺序

select * from table where good_id   (pageNo-1)*pageSize order by good_id limit pageSize; 
–返回 good_id 为 40 到 50 之间的数据, 数据依据 good_id 顺序排列 

四、分页最佳方案

 每页显示 10 条:当前  118 120, 125
  大   小
 980 970 7 6 6 5 54 43 32
21 19 98 
 select 
 * 
 from 
 tb1 
 where 
 nid   (select nid from (select nid from tb1 where nid    当前页最小值  order by nid desc limit  每页数据  *【页码 - 当前页】) A order by A.nid asc limit 1) 
 order by 
 nid desc 
 limit 10;

 where   nid   (select nid from (select nid from tb1 where nid   970 order by nid desc limit 40) A order by A.nid asc limit 1)   order by   nid desc   limit 10;
 where   nid   (select nid from (select nid from tb1 where nid    当前页最大值  order by nid asc limit  每页数据  *【当前页 - 页码】) A order by A.nid asc limit 1)   order by   nid desc   limit 10;
 where   nid   (select nid from (select nid from tb1 where nid   980 order by nid asc limit 20) A order by A.nid desc limit 1)   order by   nid desc   limit 10;

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“MySQL 如何使用 limit 方式实现分页”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1660字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)