利用MySQL来实现分页有多种:

1.使用limit关键字来进行分页:

limit函数的介绍elect * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录,n是指从第m+1条开始,取n条。
所以我们就能限制m和n来达到分页效果。

pageIndex是你的页数,pageSize是你每一页的数据大小

select * from tb_test limit (pageIndex-1) * pageSize,pageSize

适应场景: 适用于数据量较少的情况(元组百/千级)。

原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3)。Limit限制的是从结果集的M位置处取出N条输出,其余抛弃。

2.用主键索引加limit实现

id_pk就是你的主键索引

select * from 表名称 where id_pk > (pageIndex\*pageSize) limit pageSize

如果用这个方法的话要注意,你的页数是从0开始的,而不是1了.

适应场景: 适用于数据量多的情况(元组数上万)。

原因: 索引扫描,速度会很快。因为数据查询出来并不是按照pk_id排序的,所以会有漏掉数据的情况。

3.基于索引再排序

SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M

适应场景: 适用于数据量多的情况(元组数上万). 最好ORDER BY后的列对象是主键或唯一所以,使得ORDERBY操作能利用索引被消除但结果集是稳定的。

原因: 索引扫描,速度会很快. 但MySQL的排序操作,只有ASC没有DESC。

4.基于索引使用prepare

prepare介绍:

PREPARE statement_name FROM sql_text /定义/
EXECUTE statement_name [USING variable [,variable…]] /执行预处理语句/
DEALLOCATE PREPARE statement_name /删除定义/

prepare语句不可以用于存储过程,自定义函数!但从 MySQL 5.0.13 开始,它可以被用于存储过程,仍不支持在函数中使用!

适用于数据量比较大的时候,因为索引扫描,速度会很快. prepare语句又比一般的查询语句快一点

第一个 ? 表示pageIndex,第二个 ? 表示pageSize

prepare stmt_name from select from 表名称 where id_pk > (? ?) order by id_pk**

适应场景: 大数据量。

原因: 索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。

5.利用MySQL支持ORDER操作可以利用索引快速定位部分元组,避免全表扫描

这个方法主要是为了满足用户需要精确查找数据,但是数据量又过大时可以进行分页

—比如: 读第1000到1019行元组(pk是主键/唯一键)。

select * from 表名 where pk>=1000 order by pk asc limit 0,20

6.利用"子查询/连接+索引"快速定位元组的位置,然后再读取元组

id是主键/唯一键。

SELECT * FROM your_table WHERE id <=
(SELECT id FROM your_table ORDER BY id desc LIMIT ($page-1)*$pagesize ORDER BY id desc LIMIT $pagesize

利用连接示例:

SELECT * FROM your_table AS t1
JOIN (SELECT id FROM your_table ORDER BY id desc LIMIT ($page-1)*$pagesize AS t2
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;

mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。

利用mysql实现分页相关推荐

  1. mysql limit 越大越慢_mysql 优化之14:php mysql limit 分页优化,页面值越大查询越慢...

    php mysql limit 分页优化,页面越大查询越慢 一.测试前言 当前测试表:nodes_hierarchy目前数据量为20多万 程序分页中我们经常使用的核心sql语句select * fro ...

  2. mysql limit分页知乎_头发一天天的掉,你知道MySQL的Limit有性能问题吗?

    你知道MySQL的Limit有性能问题吗? MySQL的分页查询通常通过limit来实现. MySQL的limit基本用法很简单.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返 ...

  3. .net mysql limit 分页原理_浅谈MySQL分页Limit的性能问题

    MySQL的分页查询通常通过limit来实现.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录行的偏移量,第二个是返回记录行的最大数目.初始记录行的偏移量是0.为了与Pos ...

  4. Mysql数据库分页查询及优化

    最近遇到个数据库分页查询问题,mysql数据库分页查询默认是升序查询,就是第一页查询的是最先插入的数据,最后一页才是最新插入的数据,弄了个小的数据库表单,记录下我的操作过程,还有优化查询速度的方法. ...

  5. quvhu重复行MySQL,利用mysql中的SQL_CALC_FOUND_ROWS 来实现group by后的记录数统计

    最近正在做一个显示消息的列表页,列表页中需要根据一个字段来分组显示.并且需要一个分页的效果. 大家也知道group by 后的数据是每一组一行记录,统计分组后的总的记录数又不能用count,所以SQL ...

  6. MySQL的分页你还在使劲的limit?

    MySQL目前常用的分页方式有两种: 1.利用limit实现分页,语法为"SELECT*FROM 表名 limit 开始记录数,每页条数": 2.利用主键索引实现分页,语法为&qu ...

  7. php可以打印一个页面,利用html实现分页打印功能的实例详解

    本篇介绍利用html实现分页打印功能的实例详解,有些不想打印出来的分页打印的都可以应用这类样式进行控制 在非打印时是无效的. 页面打印 /* 应用这个样式的在打印时隐藏 */ .noPrint { d ...

  8. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1; SELECT a FROM f ...

  9. sqlanyshere转mysql_【SQL】Oracle和Mysql的分页、重复数据查询(limit、rownum、rowid)

    上周三面试题有两道涉及Oracle的分页查询,没有意外地凉了,现在总结一下. · Mysql mysql的分页可以直接使用关键字limit,句子写起来比较方便. 语法: ① limit m,n -- ...

最新文章

  1. Git 经常使用命令总结
  2. 成功解决ValueError: Dimension 1 in both shapes must be equal, for ‘Assign_8‘ (op: ‘Assign‘) with input s
  3. 海南工会云会员认证_好消息!海南农民工春节返乡最高有300元补贴!申请条件和流程→...
  4. SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置
  5. 伙伴分配器的一个极简实现
  6. Nmap源码分析(整体架构)
  7. C语言课后习题(34)
  8. ansible基本模块-copy
  9. appfuse mysql_Appfuse:起步
  10. c++ vs2015 播放音乐_三星s20都取消了耳机孔,1k-2k的播放器会成为直推党新选择吗?...
  11. Java 读取Word文本框中的文本/图片/表格
  12. html的表格使用函数,表格函数column是什么意思
  13. Elasticsearch语法大全
  14. 巴比特专访丨Afri谈退出以太坊:再见,“分手”后依然是朋友
  15. 操作系统基础教程——第六章课后答案
  16. Android兴趣选择功能的实现
  17. Android 组件化方案 JIMU 体验
  18. 2021年中式烹调师(中级)考试题及中式烹调师(中级)找解析
  19. 1719C - Fighting Tournament
  20. 百度文库和豆丁文库的外链推广技巧差异性分析【唯有网络】

热门文章

  1. cisco路由器基本实验之八 关于NAT的实验(Boson NetSim)
  2. 1095: C语言程序设计教程(第三版)课后习题10.2
  3. 51单片机独立按键控制LED状态
  4. C编译问题: declaration is incompatible with previous FuncName (declared at line XXX)
  5. 《画解数据结构》九张动图,画解顺序表
  6. mathtype在word2016中安装
  7. 【PTA题目】7-4 输出大写英文字母 (15 分)
  8. 服务器连接文件,连接服务器文件
  9. ftp文件服务器连接超时,ftp服务器连接成功 获取文件超时
  10. 微信小程序查看通讯录 联系人