关闭

Mysql的三种分页方法

3686人阅读 评论(0) 收藏 举报
1、limit m,n分页语句:
select * from dept order by deptno desc limit 3,3;
select * from dept order by deptno desc limit m,n;
limit 3,3的意思扫描满足条件的3+3行,撇去前面的3行,返回最后的3行,那么问题来了,如果是limit 200000,200,需要扫描200200行,如果在一个高并发的应用里,每次查询需要扫描超过20W行,效率十分低下。


2、limit m语句:
 select * from dept where deptno >10 order by deptno asc limit n;//下一页
 select * from dept where deptno <60 order by deptno desc limit n//上一页
这种方式不管翻多少页只需要扫描n条数据。


3、方法2 虽然扫描的数据量少了,但是在某些需要跳转到多少也得时候就无法实现,这时还是需要用到方法1,既然不能避免,那么我们可以考虑尽量减小m的值,因此我们可以给这条语句加上一个条件限制。是的每次扫描不用从第一条开始。这样就能尽量减少扫描的数据量。

例如:每页10条数据,当前是第10页,当前条目ID的最大值是109,最小值是100.
那么跳到第9页:
select * from dept where deptno<100 order by desc limit 0,10;

那么跳到第8页:
select * from dept where deptno<100 order by desc limit 10,10;

那么跳到第11页:
select * from dept where deptno>109 order by asc limit 0,10;

那么跳到第11页:
select * from dept where deptno>109 order by asc limit 10,10;

如有错误,敬请指正,在此提前表示感谢!!!
1
0
查看评论

Mysql 分页

分页其实很简单,无非就是根据sql语句,加上限制条件,显示从第几条数据,到第几条数据而已。 切入正题,先看一下下面的例子。我有一张表sjdr_product_detail 首先查询全部:select * from sjdr_product_detail; //一共17条数据分页,就是通过sql语...
  • moyanxuan_1993_2_24
  • moyanxuan_1993_2_24
  • 2015-08-13 16:04
  • 36872

MySQL详解(18)-----------分页方法总结

---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适应场景: 适用于数据量较少的情况(元组百/千级) ---原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回...
  • u011225629
  • u011225629
  • 2015-07-06 16:17
  • 2724

Mysql分页查询高效方案

mysql分页高效方案
  • bestcleaner
  • bestcleaner
  • 2016-11-01 10:24
  • 4345

MySql分页查询的那些坑和各种技巧

转自:http://blog.jamespan.me/2015/01/22/trick-of-paging-query/ 背景 从上周开始我就一直在做数据清洗的工作,这次算是体会到了什么叫做“抛开数据量谈实现就是耍流氓”。 我设计方案和调试代码连接的都是日常环境的数据库,里面的单表数据...
  • chelen_jak
  • chelen_jak
  • 2015-04-18 09:23
  • 958

mysql的两种分页

1、通过limit分页,这是大家常用的分页 select * from limit 0,10 0 起始位置 10 条数大小 2、通过行号分页,和Oracle一样通过自己显示rownum行号然后截取 SET @pageNow=2; /设置当前页/ SET @pageSize=10; /设...
  • u014315941
  • u014315941
  • 2016-01-20 17:41
  • 1247

MySQL分页

现在有一些MySQL的分页插件,比如com.github.miemiedev.mybatis.paginator,尽管这些插件可以帮助开发,我还是觉得作为一个后端人员,对于MySQL的分页不仅仅只停留在调插件的水平,至少原理要知道,最好能封装自己的分页插件。 1.原理 MySQL用limit来限...
  • FreemanZhao
  • FreemanZhao
  • 2016-12-22 18:52
  • 515

MySQL 百万级分页优化(Mysql千万级快速分页)

一般刚开始学SQL的时候,会这样写 SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 ...
  • li772030428
  • li772030428
  • 2016-10-17 16:59
  • 3301

MySql实现分页查询的SQL,mysql实现分页查询的sql语句

摘要:MySql数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际...
  • sxdtzhaoxinguo
  • sxdtzhaoxinguo
  • 2016-05-23 14:44
  • 43827

Mysql分页查询获取totalCount大幅提升性能的办法总结

做分页查询中,一般情况下需要两个sql,查当前页数据 和 查记录总条数;但后者的查询结果变化有时候并不大,而且count还占用了很大一部分的查询时间;主要是想用一种省时简便的方法查询符合条件的记录总数, 查询数据使用的sql为: SELECT SUBSTRING_INDEX(`url...
  • u010802573
  • u010802573
  • 2015-12-28 18:16
  • 3571

Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)

最近在用Mybatis做项目的时候遇到了不少问题,今天我就在这和大家分享一下,稀稀拉拉的研究了两天,终于搞好了!      开发人员:1111      开发软件:Myeclipse    ...
  • qq_34137397
  • qq_34137397
  • 2017-03-18 22:43
  • 13288
    个人资料
    • 访问:4332次
    • 积分:119
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档