MySQL分页原理

MySQL 8.0 Limit原理详解与大分页优化实战 优化方法适用场景优点缺点覆盖索引 + 延迟关联需要跳转任意页通用性强,显著减少IO需索引支持游标分页仅需连续翻页(如瀑布流)无offset,性能最优无法跳转任意页预计算偏移量高频访问的固定分页(如热门页)查询极快维护成本高,数据需稳定最佳实践优先使用游标分页,尤其是C端用户场景。必须使用offset时,通过覆盖索引减少回表。定期分析慢查询日志,针对性优化高频分页操作。 阅读详情

在很多应用场景下,我们需要对从数据库中查询出的数据进行分段展示,比如一个有1000+数据量的用户信息表,当我们需要查看所有用户信息时,我们可能会以10+条或者20+条 或者更多数量一次展示在应用上,但是绝不会是把所有数据一次展示,要实现这样的功能,我们就需要对数据进行分页(分段)展示,理论上讲,数据分页可以在程序中进行,也可以利用数据库实现


在程序中实现时 我们将查询出的数据在程序中分段,每次截取一个子段返回给请求应用,但使用这种方法需要我们每次都从数据库中获取全部的数据,当数据量很大时,肯定会影响到数据库的性能,所以一般情况下不选择使用。


利用数据库本身实现 在此仅讨论MYSQL数据库,在MYSQL数据库中有一个LIMIT关键字,在MYSQL的说明文档的SELECT Syntax小节中LIMIT关键字描述如下:

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [MAX_STATEMENT_TIME = N]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]

    -- Limit 
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

TheLIMIT clause [klɔːz] (子句) can be used to constrain [kən’streɪn] (限制) the number of rows returned by the SELECT statement.LIMITtakes one or two numeric [njuː’merɪk] 整形的 arguments, which must both be nonnegative (非负的) integer constants(常量), with these exceptions:

  • Withinprepared statements, LIMIT parameters can be specified using? placeholder markers.
  • Within stored programs, LIMIT parameters can be specified using integer-valued routine parameters(常规变量)or local variables.

当使用两个参数时,第一个参数表示offset 起始位置,第二个参数表示返回的最大行数the maximum number of rows to return,其中offset的初始值是0(not 1)

-- 检索第6-15条数据
SELECT * FROM tbl LIMIT 5,10;

当使用一个参数时,该参数表示返回的最大行数(With one argument, the value specifies ·the number of rows to return from the beginning of the result set)

-- 从默认起始位置(0)开始返回5前条数据
SELECT * FROM tbl LIMIT 5;

总结 了解了MYSQL中关键字LIMIT的用法之后,分页便是很简单的事情了,在程序中,用两个参数表示LIMIT的offset和rows,每次请求时传递当前页面的值和每页的数据量便可。分页在Java中的实现将在下一篇博客中讲到。

MySQL分页分析原理及提高效率 主要介绍了MySQL分页分析原理及提高效率的相关资料,需要的朋友可以参考下 立即下载

相关推荐

mysql分页原理和高效率的mysql分页查询语句

主要介绍了mysql分页原理和高效率的mysql分页查询语句,大家参考使用吧

mysql分页原理

一、基础知识 实现分页的必要条件:必须知道 某一页的 数据 从哪里开始 到哪里结束。 页面大小:指每页显示的数据量。 分页过程分析: (假设每页显示10条数据)特别注意:mysql从0开始计数 0 0 9 1 10 19 2 20 29 n n*10 (n+1)*10-1 分...

大学生小汪的成长博客 3920

【外挂编程】外挂编程技术揭秘(二)

引言: 经过上一篇文章大家可能对外挂有了一个初步的认识,之前的内容比较简单,应该大家很容易掌握。我写作过程中我发现三个篇幅可能写不完,后续还可能要多加几个篇幅,这篇我们就先以内存挂为主吧。话不多说了,让我们开始吧。 文章中代码github地址: https://github.com/Diamonds-ZhaoYu/hz_example 环境要求: 系统:Windows 语言...

c-rain 4034

mysql分页的原理、php实现分页

第11至20条记录:select * from table limit 10,20。第21至30条记录:select * from table limit 20,30。前10条记录:select * from table limit 0,10。所谓分页显示,也就是将数据库中的结果集,一段一段显示出来。LIMIT n 和 LIMIT 0,n的意思是一样的。怎么分段,当前在第几段 (每页有几条,当前再第几页)(当前页数 - 1 )X 每页条数 , 每页条数。

qq_32450471的博客 1021

FPGA数字下变频实战:用Vivado DDS IP核实现IQ采样与频率校正(附MATLAB仿真对比)

本文提供了一份基于Vivado DDS IP核实现FPGA数字下变频(DDC)的完整工程指南。详细阐述了IQ采样的原理、DDC链路构建、DDS频率校正的工程实现,并重点介绍了如何利用MATLAB搭建黄金参考模型进行全链路仿真与对比验证,分享了关键的调试技巧与性能优化建议。

t1u2v的博客 811

【智驾与大模型】端到端与多模态大模型的精彩之旅

智驾和大模型的回顾与展望。开头的笔者自述也说了些心窝子话,边缘计算的监管刻不容缓!

仿生实验室:从0到1,制作人脸表情交互机器人,记录过程,软硬件全部开源,与君共襄盛举! 1320

MySQL分页查询的工作原理

MySQL分页查询的工作原理

weixin_45817985的博客 798

四旋翼无人机数学模型推导

本周开始进行四旋翼无人机的学习工作,首先来进行四旋翼无人机的数学模型推导工作。。 四旋翼动力学数学模型 坐标变换 介绍四旋翼数学模型之前,首先引入坐标变换的概念,定义两个坐标系惯性坐标系{E},以及机体坐标系{B},惯性坐标系就相当于在地面建立的、静止不动的坐标系,也是我们操纵无人机所在的空间,而机体坐标系是建立于四旋翼机体之上,随着四旋翼姿态变换而变化,所以建立一种地面上的惯性坐标系与四旋翼机体坐标系之间的转换关系,就有这个必要。 对于惯性坐标系{E},以及机体坐标系{B},它们之间的转换关系

BiuBiuSun的博客 1万+

分页思路及实现原理(MySQL)

分页思路及实现原理(MySQL)

tanx的博客 1427

不止于连接:用VS Code Remote-SSH深度开发树莓派(Ubuntu 22.04环境实战)

本文详细介绍了如何在Ubuntu 22.04环境下使用VS Code的Remote-SSH功能进行树莓派深度开发。通过SSH配置、VS Code扩展安装和远程环境优化,开发者可以在本地高效编写代码,同时在树莓派上直接运行和测试,解决性能瓶颈问题。文章还提供了高级功能如端口转发、多项目管理和远程调试的实战技巧。

didui8202的博客 352

告别C盘爆红!手把手教你将WSL2下的Ubuntu 22.04完整迁移到D盘(附清理指南)

本文详细指导如何将WSL2下的Ubuntu 22.04从C盘无损迁移到D盘,包括导出备份、注销原系统、导入新位置等关键步骤,并提供迁移后的优化配置、开发环境衔接及长期维护技巧,帮助用户彻底解决C盘空间不足问题。

weixin_28698059的博客 474

MySQL分页查询原理详解:如何优化你的数据库查询

1. 前言MySQL 的分页查询在我们的开发过程中还是很常见的,比如一些后台管理系统,我们一般会有查询订单列表页、商品列表页等。示例:SELECTFROM`goods`orderbylimit010;在了解order by和limit的工作原理之前,我们首先回顾下 MySQL 的执行流程和索引结构。注:下面没有特别说明默认 MySQL 的引擎为 InnoDB为讲述方便使用 select * ,生产环境不建议使用。

Reische的博客 513

rk3588平台USB 3.0 -OAK深度相机适配方法

摘要:本文记录了OAK摄像头设备的配置与测试流程。主要内容包括:1)添加USB设备udev规则;2)拉取相关依赖库;3)安装Python3和pip;4)安装项目依赖;5)安装FFmpeg工具;6)测试摄像头功能并转换视频格式;7)将测试视频拷贝到U盘查看。操作步骤涵盖了从设备驱动配置到功能测试的完整流程,提供了详细的命令行操作指引。通过该文档可快速完成OAK摄像头的环境搭建和基础功能验证。

yy_hear的博客 325

PageHelper分页原理解析:从源码到MySQL方言实现

本文深入解析了MyBatis生态中PageHelper插件(v5.3.2)的分页实现机制。通过MyBatis插件机制,PageHelper在SQL执行前拦截并动态改写SQL语句,实现物理分页。其核心设计包括:使用ThreadLocal存储分页上下文,支持多数据库方言,自动生成COUNT查询,并结合MySQL的LIMIT语法特性进行分页处理。文章详细阐述了从分页参数设置、SQL拦截、参数绑定到结果封装的完整执行流程,并提供了避免深分页、参数校验等最佳实践建议。理解PageHelper的实现原理有助于开发者更好

ze15829163918的博客 903

【从零到一】Jetson Nano上YOLOv5部署完全攻略:零基础小白也能玩转边缘AI推理

文章摘要: 本文详细介绍了在Jetson Nano边缘设备上部署YOLOv5目标检测模型的完整流程。从硬件准备、系统镜像烧录、基础环境配置,到CUDA/cuDNN验证、Python虚拟环境搭建及PyTorch安装,逐步指导开发者完成部署准备。教程兼顾理论原理与实践操作,提供Python和C++两种实现方案,并涵盖TensorRT优化、实时检测等生产级应用场景,帮助零基础开发者快速掌握边缘AI推理技术,实现高性能目标检测应用。

LXY_LOVE36的博客 369

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java_web:mysql数据库实现分页原理

mysql实现分页原理 应用实例:假设需要某数据表每页显示10条数据 1.要实现分页,必须知道某一页的数据从哪里开始到哪里结束。 2.mysql从0开始计数,sqlserver与oracle从1开始计数(在此只讨论mysql实现分页原理)。 3.分析分页通式 第n页 开始 结束 0 0 9 1 10 19 2 20 29 n n*10 n*10+9 4.mysql实现分页的sql(每页显示10条数据) limit 开始,每页显示多少条数据 页面大小:每页显示的数据量 第0页

weixin_45873215的博客 451

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

mysql分页sql基本原理

1 mysql分页原理   假设数据库表student存在13条数据。 语句1:select * from student limit 9,4 语句2:slect * from student limit 4 offset 9 // 语句1和2均返回表student的第10、11、12、13行   //语句1中的4表示返回4行,9表示从表的第十行开始 //语句2中的4表示返回4行...

5571

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何在MySQL中实现分页查询?如何避免深分页问题?使用场景是什么?底层原理是什么?

在MySQL中实现分页查询通常使用LIMIT和OFFSET子句。然而,随着偏移量(OFFSET)的增大,性能会显著下降,这就是所谓的“深分页问题”。

长风破浪会有时的博客 597

MyBatis有哪些分页方式及原理?MySql分页?Oracle分页? Mybatis 的插件运行原理?

MyBatis有哪些分页方式? 正常人,一般使用物理分页。 分为逻辑分页和物理分页 所谓逻辑分页,是指使用MyBatis自带的RowBounds进行分页,它会一次性查出多条数据,然后再检索分页中的数据,具体一次性查询多少条数据,受封装jdbc配置的fetch-size决定 而物理分页,是从数据库中查询指定条数的数据,而我们用的分页插件PageHelper实现的就是物理分页 MySQL分页 limit(m,n) m下标 n条数 主键索引加limt where id_pk > x limt n Ora

zwb的博客 598

mysql分页技术实现原理_分页原理技术细节剖析(php+mysql)实例

提到分页,大家都不陌生,在我们日常浏览网页时常遇到,尤其新闻文章列表等都有分页,如下图所示:分页实例下面,通过一个实例为大家剖析一下分页原理上技术细节。一、功能开发思路在分页功能的实现前,先做了一个思维导图理清一下大概的思路,废话不多说,上图:分页原理思维导图二、功能开发各模块介绍用到的工具有,轻量级编辑器editplus,mysql数据库管理工具phpmyadmin,环境为windows 7下A...

weixin_42183486的博客 558

mysql工具分页原理_高效的mysql分页方法及原理

首先看一下分页的基本原理:复制代码 代码如下:mysql> explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20G ***************** 1. row ************** id: 1 select_type: SIMPLE table: message type: index possible_k...

weixin_32258195的博客 278

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

MySQL的分页查询通常通过limit来实现。limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录行的偏移量,第二个是返回记录行的最大数目。初始记录行的偏移量是0。为了与PostgreSQL兼容,limit也支持limit # offset #。问题:对于小的偏移量,直接使用limit来查询没有什么问题,但随着数据量的增大,越往后分页,limit语句的偏移量就会越大,速度也...

weixin_36411999的博客 306
上一篇: java.util.ConcurrentModificationException错误
下一篇: Java8方法引用(::)
Banboll
博客等级 码龄10年 4粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值