主页 > 知识库 > MySQL用limit方式实现分页的实例方法

MySQL用limit方式实现分页的实例方法

热门标签:外呼系统电销受骗 走过哪个省地图标注 巫师三血与酒地图标注 莱西市地图标注 在哪里申请400电话 销售语音电话机器人 安徽ai电话电销机器人有效果吗 常州网络外呼系统开发 400电话申请信用卡

一、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;



  select 
    * 
  from 
    tb1 
  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;


上一页:

  select 
    * 
  from 
    tb1 
  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;


  select 
    * 
  from 
    tb1 
  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;

以上就是本次介绍的关于MySQL实现分页的方法的全部内容,感谢大家的学习和对脚本之家的支持。

您可能感兴趣的文章:
  • MySql分页时使用limit+order by会出现数据重复问题解决
  • 为什么MySQL分页用limit会越来越慢
  • mysql优化之query_cache_limit参数说明
  • 详解Mysql order by与limit混用陷阱
  • MySQL limit分页大偏移量慢的原因及优化方案
  • Mysql排序和分页(order by&limit)及存在的坑
  • MySQL limit使用方法以及超大分页问题解决
  • 浅谈MySQL分页Limit的性能问题
  • MySQL limit性能分析与优化
  • MySQL查询中LIMIT的大offset导致性能低下浅析
  • MySQL 用 limit 为什么会影响性能

标签:阳江 黄石 河北 鞍山 烟台 来宾 果洛 赤峰

巨人网络通讯声明:本文标题《MySQL用limit方式实现分页的实例方法》,本文关键词  MySQL,用,limit,方式,实现,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《MySQL用limit方式实现分页的实例方法》相关的同类信息!
  • 本页收集关于MySQL用limit方式实现分页的实例方法的相关信息资讯供网民参考!
  • 推荐文章