mysql如何执行才有更好的分页效果

MySQL的分页你还在使劲的limit? 先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。当然,这种写法存在一定问题,如果第0页的id=5的数据被删除了,就会导致查询第0页的数据和第1页的数据有重合,第0页是1-4,6-11(默认一页10条数据,因为limit10,所以会查询到id=11),第二页就是11-20,可见id=11重合了。但不同的地方在于,在返回server层的过程中,只会拷贝数据行内的id这一列,而不会拷贝数据行的所有列,当数据量较大时,这部分的耗时还是比较明显的。... 阅读详情

文章转自:http://www.dev26.com/bbs/topic/389

最近一直在考虑网站改造的问题,因为我实在受不了来回的折腾hibernate、JPA这些东西了,有学这些的时间我还不如用这时间研究一下SQL,当然也是我个人比较懒,现在就把我收集的关于mysql高交往分页的一些知识点列出来。

先看一下分页的基本原理(我拿的是优快云那个百万级数据库来测试!):

1
SELECT  *  FROM  `csdn`  ORDER  BY  id  DESC  LIMIT 100000,2000;


耗时: 0.813ms

分析:对上面的mysql语句说明:limit 100000,2000的意思扫描满足条件的102000行,扔掉前面的100000行,返回最后的2000行。

问题就在这里,如果是limit 100000,20000,需要扫描120000行,在一个高并发的应用里,每次查询需要扫描超过100000行,性能肯定大打折扣。

在《efficient pagination using mysql》中提出的clue方式。

利用clue方法,给翻页提供一些线索,比如还是SELECT * FROM `csdn` order by id desc,按id降序分页,每页2000条,当前是第50页,当前页条目id最大的是102000,最小的是100000。如果我们只提供上一页、下一页这样的跳转(不提供到第N页的跳转)。

那么在处理上一页的时候SQL语句可以是:

1
SELECT  *  FROM  `csdn`  WHERE  id<=102000  ORDER  BY  id  DESC  LIMIT 2000; #上一页


耗时:0.015ms

处理下一页的时候SQL语句可以是:

1
SELECT  *  FROM  `csdn`  WHERE  id>102000  ORDER  BY  id  ASC  LIMIT 2000; #下一页


耗时:0.015ms

这样,不管翻多少页,每次查询只扫描20行。效率大大提高了!

但是,这样分页的缺点是只能提供上一页、下一页的链接形式。

MySQL——分页优化 文章目录准备前言limit 执行原理常见分页场景优化技巧1、根据`自增且连续的主键排序`,使用where id > m limit n 分页2、根据`非主键`字段排序,进行分页查询 准备 建立数据库表,同时使用存储过程,添加100000条记录信息。sql如下所示: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', 阅读详情

相关推荐

MySQL高效分页解决方案集分享

一,最常见MYSQL最基本的分页方式: 代码如下:select * from content order by id desc limit 0, 10在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似: 代码如下:select * from content order by id desc limit 10000, 10一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。此时,我们可以通过2种方式:一,子查询的分页方式来提高分页效率,飘易用的SQL语句如下: 代码如下:SEL

为什么我的MySQL分页效率这么高

如何优化MySQL分页

咖啡攻城狮的博客 1758

MacBook Pro 合盖省电终极配置:pmset 5条命令实现一夜掉电<1%

本文详细介绍了如何通过5条pmset终端命令优化MacBook Pro的合盖休眠设置,实现一夜掉电<1%的极致省电效果。针对M系列芯片的特性,文章解析了MacOS的休眠机制,并提供电池模式与电源模式的差异化配置方案,帮助用户显著提升续航表现。

weixin_33824385的博客 476

php mysql 高效分页_MySQL高效分页解决方案集_MySQL

bitsCN.comMySQL高效分页解决方案集一,最常见MYSQL最基本的分页方式:select * from content order by id desc limit 0, 10在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:select * from content order by id ...

weixin_42351362的博客 406

组合导航-IMU-GPS-RTK基本介绍

在实际应用中,需要利用 GPS、北斗等方式产生的信号进行初始化,结合惯导信号和卫星导航信号进行进行卡尔曼滤波处理,得出其最佳推算的定位信息。惯导比起卫星定位具有自身的技术优势,测量方法不依赖外界,短期精度高,能稳 定高频地输出信号。工作原理是通过感知物体在空间的角速度、线速度,进而获取物体的姿态、位置和速度等信息,实现对运动物体姿态和运动轨迹的测量,可以实现全天候全地点地工作。但惯导也有自身的缺陷,由于采用积分算法,定位误差随 载体运行不断累积。

NCU_wander的博客 8015

ABAP Platform 2025 到来之后,我们该怎样重新理解 SAP S/4HANA 2025 的开发边界

2025年10月,SAP正式发布S/4HANA Cloud Private Edition 2025及S/4HANA 2025,其技术底座ABAP Platform 2025全面支持SAP HANA数据库。新版平台强调Clean Core理念升级为四级成熟度模型,推动ABAP Cloud成为扩展开发首选方案。AI能力正式融入ABAP开发全流程,包括代码生成、迁移辅助等场景。RAP框架显著增强,支持跨业务对象协作、树形视图等复杂业务场景。ADT开发工具持续进化,新增内存分析、单元测试等专业功能,形成完整开发工

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 306

MySQL中如何实现高效的分页查询?

高效地实现分页查询需要根据具体的业务场景和数据特性来选择合适的方法。一般情况下,结合覆盖索引、减少OFFSET的使用以及合理设计查询语句是提升分页查询性能的有效手段。同时,定期分析和优化数据库表结构及索引也是保证查询性能的重要步骤。

qq_33240556的博客 878

复现:Mamba-UNet:降水临近预报的创新解决方案

Mamba-UNet通过其创新的双分支Mamba融合模块、多尺度时空注意力模块和动态分位数加权损失函数,在降水临近预报领域取得了显著的性能提升。它不仅在多种降水场景下表现出色,尤其在预测强降水事件方面展现出了强大的能力。这一创新模型为降水临近预报提供了一种新的解决方案,有望在未来的研究和应用中发挥更大的作用,为应对气候变化带来的挑战提供有力支持。随着技术的不断发展和优化,我们期待Mamba-UNet在更广泛的气象预报任务中发挥更大的价值,为各行各业提供更精准、更可靠的降水预报服务。

hanfeng5268的博客 912

mysql高级查询~分页查询

mysql高级查询~分页查询

伟庭的博客 7034

视觉Transformer实战 | Data-efficient image Transformer(DeiT)详解与实现

在计算机视觉领域,Vision Transformer (ViT) 已经证明了纯 Transformer 架构在图像分类任务上的强大能力。然而,ViT 通常需要在大规模数据集上预训练才能达到最佳性能,DeiT (Data-efficient image Transformer) 通过引入一系列训练策略和优化,使得 Transformer 模型能够在相对较小的数据集上取得优异表现。本节将详细介绍 DeiT 的技术原理,并使用 PyTorch 从零开始实现 DeiT 模型。

盼小辉丶的博客 1341

halcon3d点云补全方法

属于halcon实例中的内容,后面还接了一部分的匹配

Tianwen_running的博客 1231

8种MySQL分页方法总结

今天在做数据库练习的时候由于数据有点多,一下全部显示出来不好看,看着比较乱,所以在查了一下怎么让MySQL分页找到了一篇不错的文章,在这里分享给大家。如果有帮到大家麻烦点个赞。谢谢。 方法1: 直接使用数据库提供的SQL语句 —语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N。 —适应场景: 适用于数据量较少的情况(元组百/千级)。 —原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3)。Li.

weixin_44096353的博客 1万+

Linux 服务器上部署 OpenClaw完整教程

2. 全局安装 OpenClaw 3. 初始化配置 配置模型提供商 方式一:使用配置命令(推荐) 方式二:直接编辑配置文件 在 部分添加: 配置多个模型提供商 如果你使用 Antigravity 本地代理,可以同时配置多个模型: 配置飞书集成 1. 创建飞书应用 访问 飞书开放平台 创建企业自建应用 记录 App ID 和 App Secret 2. 配置应用权限 在飞书开放平台,为应用添加以下权限:重要: 必须使用 长连接(WebSocket) 模式,不要使用 HTTP 回调!在飞书开放

Maynor的博客 5247

MYSQL LIMIT

原文地址:http://www.zhenhua.org/article.asp?id=200 1.MYSQL的优化是非常重要的。其他最常用也最需要优化的就是limit。mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。同样是取10条数据select * from yanxue8_visit limit 10000,10和select * from yan...

calfman的专栏 114

①电子产品拆解分析-暖手宝

电子产品拆解分析-暖手宝 ①按键三档调温暖手; ②长按进入氛围呼吸灯; ③安卓接口充电以及支持USB输出;

a6662580的博客 5294

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

深入优化MySQL深度分页:从第10000页出发,Java模拟高效分页技巧

深度分页在数据量大的场景下容易引发性能问题,MySQL 的传统LIMIT实现会导致不必要的记录扫描。通过覆盖索引、延迟关联、自增主键优化等技术手段,可以大大减少扫描的记录数,提升分页查询的效率。在实际的业务场景中,可以根据具体数据结构和查询场景选择合适的优化方式,以满足高效分页查询的需求。

hikktn的博客 1510

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MySQL分页到了后面越来越慢?这些问题或许你从未注意到

在日常开发中,我们经常会遇到对数据库进行分页查询的需求。然而,随着数据量的增长,分页查询的速度往往会逐渐变慢,尤其是在访问较靠后的页面时。这不仅影响用户体验,还可能成为系统性能的瓶颈。本文将深入探讨MySQL分页查询变慢的原因,并提供几种有效的解决方案,帮助你在面对海量数据时仍能保持高效的分页查询性能。

cda2024的博客 1665

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OceanBase v4.2 特性解析:如何用分页保序功能解决MySQL模式分页查询不稳定

OceanBase 4.2.1 引入了分页保序功能,只在MySQL租户下可以使用,解决分页查询结果的不稳定性的问题。

OceanBase分布式数据库的博客 1681

MySQL百万级数据分页查询及优化

MYSQL分页基础语法 mysql使用查询语句的时候,经常要返回前几条或者中间某几行数据,也就是我们说的分页,语法如下: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,...

Lyzxii 4621

mysql分页查询如何优化_mysql分页查询优化

测试实验1. 直接用limitstart,count分页语句,也是我程序中用的方法:select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10,100,1000,10000开始分页的执行时间(每页取20条),如下:select * from product limit 10, 20 0.016秒sele...

weixin_30689519的博客 2180

面试必知必会(14):MySQL执行计划与SQL优化

本文是Java面试系列文章中的一篇,重点讲解MySQL执行计划与SQL优化。文章首先概述MySQL查询执行流程,包括连接器、解析器、优化器等关键步骤。核心部分详细解读EXPLAIN命令的输出字段,如访问类型(type)、索引使用(key)、扫描行数(rows)等重要指标。随后提供SQL优化实战技巧:合理使用索引(遵循最左前缀原则)、避免SELECT*以减少数据传输、优化ORDER BY与GROUP BY操作等。通过实际示例演示如何分析执行计划并优化查询性能,帮助开发者掌握MySQL性能调优的核心方法。

从基础到源码解析的学习记录 2747

mysql limit分页_mysql使用limit分页优化方案

一、测试实验 mysql分页直接用limit start, count分页语句: select * from product limit start, count 当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条),如下:select * from product limit 10, 20 0.016秒select * fr...

weixin_39815286的博客 270

MySql-千万级数据 分页优化

MySql 千万级数据 分页优化

weixin_38923162的博客 2801

MySQL分页用limit 为什么会越来越慢

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

weixin_42179304的博客 1182

MySQL 百万级数据,如何做分页查询?

随着业务的增长,数据库的数据也呈指数级增长,拿订单表为例,之前的订单表每天只有几千个,一个月下来不超过十万。而现在每天的订单大概就是2w+,目前订单表的数据已经达到了700w。这带来了各种各样的问题,今天我先从一个小问题开始。之前所写的代码mysql的分页都是采用的limit方式进行,这种方式固然代码比较简单,但数据量大了之后真的是查的慢。所以此处涉及到mysql大数据量后的分页查询方法及其优化技巧。

zhiyikeji的博客 3421
上一篇: 用Java实现多线程服务器程序
下一篇: mysql如何高效分页
wtsoftware
博客等级 码龄19年 12粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值