MySQL limit offset分页查询可能存在的问题
MySQL limit offset分页查询语句
有 3 种形式:
- limit 10:不指定 offset,即 offset = 0 ,表示读取第 1 ~ 10 条记录。
- limit 20, 10:offset = 20,因为 offset 从 0 开始,20 表示从第 21 条记录开始读取,所以表示读取第 21 ~ 30 条记录。
- limit 10 offset 20:和上一条功能相同,只是换了一种写法,不常用。
limit offset分页查询语句可能存在的问题
-
功能问题,漏掉部分数据
在查询出满足条件一页数据后,对这些数据做了修改,修改后这些数据不再满足查询条件,再查询下一页数据时就会漏掉部分满足条件的数据。
-
性能问题
深度分页问题,数据量很大时,例如 limit 10000000, 100 ,存储引擎层会查询 10000100 条数据返回给 server层,server 层过滤掉前 10000000 条后返回最后 100 条给客户端。
其中深度分页的性能问题网上很多人都写过,本文主要对第一个问题说明一下,其实两个问题的解决方案都是一样的。
limit offset分页查询语句漏掉部分数据问题详细说明
场景描述
存在如下表,主键 id 是自增整数,需要在应用程序中每天 00:00:00 遍历这个表,查询所有 flag字段为 0 的记录,将flag 字段修改为 1。

存在的问题
如果使用 limit offset 分页查询,每页查询 2 条数据,查询第一页数据:
SELECT * FROM student where flag = 0 limit 0,2;

然后将这两条记录的 flag 字段改为 1:
UPDATE student set flag = 0 where id in (6,8);
此时数据库中的数据变为:

接着循环查询第 2 页的数据:
SELECT * FROM student where flag = 0 limit 2,2;

这样就导致 id 为 9 和 10 的这两条记录没有被查询到,这两条数据就不会被处理。

解决方案
查询第一页
SELECT * FROM student where id > 0 and flag = 0 order by id limit 2;

处理这两天数据:UPDATE student set flag = 0 where id in (6,8);
查询第二页数据时将第一页最后一条数据的id (值为8)传入查询条件中:
SELECT * FROM student where id > 8 and flag = 0 order by id limit 2;

这样就不会再漏掉数据。
再补充说明一下:如果在定时任务执行过程中一直有数据写入,可能导致定时任务执行时间过长,为了避免这种情况,可以在定时任务开始处理数据时先查询一下当前数据库中的主键 id 的最大值,本次任务只处理到这条记录,执行过程中新增的数据等到第 2 天定时任务再处理。应用程序执行的 SQL 变为:
SELECT id FROM student order by id desc limit 1;// 假设上一条命令查询的最大 id 是 15
SELECT * FROM student where id > 0 and id < 15 and flag = 0 limit 2;// 假设上一条命令中最后 1 条记录的 id 是 8
SELECT * FROM student where id > 8 and id < 15 and flag = 0 limit 2;
对应的应用程序代码按照 SQL 执行的逻辑写就可以。
相关文章:
MySQL limit offset分页查询可能存在的问题
MySQL limit offset分页查询语句 有 3 种形式: limit 10:不指定 offset,即 offset 0 ,表示读取第 1 ~ 10 条记录。limit 20, 10:offset 20,因为 offset 从 0 开始,20 表示从第 21 条记录开始…...
CODESYS可视化桌面屏保-动态气泡制作详细案例
#一个用于可视化(HMI)界面的动态屏保的详细制作案例程序# 前言: 在工控自动化设备上,为了防止由于人为误触发或操作引起的故障,通常在触摸屏(HMI)增加屏幕保护界面,然而随着PLC偏IT化的发展,在控制界面上的美观程度也逐渐向上位机或网页前端方面发展,本篇模仿Windows…...
华为 Atlas500 Euler 欧拉系统操作指南
华为 Atlas500 Euler 欧拉系统操作指南 ssh root连接 找到Atlas500的IP地址,如:192.168.1.166 账号/密码:admin/Huawei123 root/密码:Huawei123456 #直接使用root ssh连接 这里受限不让直接用root连接 ssh root192.168.1.116 #…...
Chromium127编译指南 Mac篇(六)- 编译优化技巧
1. 前言 在Chromium127的开发过程中,优化编译速度是提升开发效率的关键因素。本文将重点介绍如何使用ccache工具来加速C/C代码的编译过程,特别是在频繁切换分支和修改代码时。通过合理配置和使用这些工具,您将能够显著减少编译时间ÿ…...
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列 《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列分配给套接字的IP地址和端口号网络地址网络地址分类和主机地址边界用于区分套接字的端口号数据传输过程示例 地址信息的表示表示IPv4…...
C++ | Leetcode C++题解之第546题移除盒子
题目: 题解: class Solution { public:int dp[100][100][100];int removeBoxes(vector<int>& boxes) {memset(dp, 0, sizeof dp);return calculatePoints(boxes, 0, boxes.size() - 1, 0);}int calculatePoints(vector<int>& boxes…...
day05(单片机)SPI+数码管
目录 SPI数码管 SPI通信 SPI总线介绍 字节交换原理 时序单元 SPI模式 模式0 模式1 模式2 模式3 数码管 介绍 74HC595芯片分析 原理图分析 cubeMX配置 程序编写 硬件SPI 软件SPI 作业: SPI数…...
Android Framework AMS(13)广播组件分析-4(LocalBroadcastManager注册/注销/广播发送处理流程解读)
该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读广播组件的广播发送过程。关注思维导图中左上侧部分即可。 有了前面普通广播组件 注册/注销程/广播组件的发送广播流程分析的基础&…...
模糊理论与模糊集概述
1. 模糊集 1️⃣ μ A : U → [ 0 , 1 ] \mu_A:U\to{[0,1]} μA:U→[0,1],将任意 u ∈ U u\in{}U u∈U映射到 [ 0 , 1 ] [0,1] [0,1]上的某个函数 模糊集: A { μ A ( u ) , u ∈ U } A\{\mu_A(u),u\in{}U\} A{μA(u),u∈U}称为 U U U上的一个模糊集…...
基于STM32的实时时钟(RTC)教学
引言 实时时钟(RTC)是微控制器中的一种重要功能,能够持续跟踪当前时间和日期。在许多应用中,RTC用于记录时间戳、定时操作等。本文将指导您如何使用STM32开发板实现RTC功能,通过示例代码实现当前时间的读取和显示。 环…...
Caffeine Cache解析(三):BoundedBuffer 与 MpscGrowableArrayQueue 源码浅析
接续 Caffeine Cache解析(一):接口设计与TinyLFU 接续 Caffeine Cache解析(二):drainStatus多线程状态流转 BoundedBuffer 与 MpscGrowableArrayQueue multiple-producer / single-consumer 这里multiple和single指的是并发数量 BoundedBuffer: Caf…...
全双工通信协议WebSocket——使用WebSocket实现智能学习助手/聊天室功能
一.什么是WebSocket? WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器的全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输 HTTP 协议是一种无状态的、无连接的、单向的应用…...
Rust-Trait 特征编程
昨夜江边春水生,艨艟巨舰一毛轻。 向来枉费推移力,此日中流自在行。 ——《活水亭观书有感二首其二》宋朱熹 【哲理】往日舟大水浅,众人使劲推船,也是白费力气,而此时春水猛涨,巨舰却自由自在地飘行在水流中…...
彻底理解哈希表(HashTable)结构
目录 介绍优缺点概念哈希函数快速的计算键类型键转索引霍纳法则 均匀的分布 哈希冲突链地址法开放地址法线性探测二次探测再哈希法 扩容/缩容实现哈希创建哈希表质数判断哈希函数插入&修改获取数据删除数据扩容/缩容函数全部代码 哈希表(Hash Table)…...
微信小程序的汽车维修预约管理系统
文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统功能简述 前台用于实现用户在页面上的各种操作,同时在个人中心显示各种操作所产生的记录:后…...
LeetCode:3255. 长度为 K 的子数组的能量值 II(模拟 Java)
目录 3255. 长度为 K 的子数组的能量值 II 题目描述: 实现代码与解析: 模拟 原理思路: 3255. 长度为 K 的子数组的能量值 II 题目描述: 给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为&am…...
深入了解逻辑回归:机器学习中的经典算法
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
软件测试基础十三(python 函数)
函数 1. 函数的意义 代码复用 提高效率:Python中的函数允许将一段可重复使用的代码封装起来。例如,在一个数据分析项目中,可能需要多次计算一组数据的平均值。可以将计算平均值的代码定义为一个函数: def calculate_average(nu…...
计算机网络——HTTP篇
基础篇 IOS七层网络模型 TCP/IP四层模型? 应⽤层:位于传输层之上,主要提供两个终端设备上的应⽤程序之间的通信,它定义了信息交换的格式,消息会交给下⼀层传输层来传输。 传输层的主要任务就是负责向两台设备进程之间…...
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
1 编制目的 2 系统运行维护 2.1 系统运维内容 2.2 日常运行维护方案 2.2.1 日常巡检 2.2.2 状态监控 2.2.3 系统优化 2.2.4 软件系统问题处理及升级 2.2.5 系统数据库管理维护 2.2.6 灾难恢复 2.3 应急运行维护方案 2.3.1 启动应急流程 2.3.2 成立应急小组 2.3.3 应急处理过程 …...
拆解国产4mm量子随机数芯片:从VCSEL激光器到PIN探测器的保姆级工作流程
国产4mm量子随机数芯片全链路解析:从VCSEL驱动到信号处理的工程实现 量子随机数生成器(QRNG)作为信息安全的基础设施,其核心价值在于利用量子力学原理实现不可预测的真随机性。本文将聚焦国产4mm尺寸QRNG芯片的实现细节࿰…...
PX4无人机仿真入门:XTDrone平台从安装到自定义机型的完整指南
PX4无人机仿真入门:XTDrone平台从安装到自定义机型的完整指南 无人机仿真技术已成为现代航空研发的重要工具,而PX4作为开源飞控系统的代表,配合XTDrone仿真平台,为开发者提供了高效、安全的测试环境。本文将带您从零开始ÿ…...
3步实现多平台同步直播:obs-multi-rtmp高效推流指南
3步实现多平台同步直播:obs-multi-rtmp高效推流指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp obs-multi-rtmp是一款专为OBS Studio设计的多平台推流插件,能…...
Halcon实战:用shape_trans算子5分钟搞定不规则区域的最小外接矩形提取
Halcon实战:5分钟精准提取不规则区域最小外接矩形的工业级方案 在工业视觉检测领域,我们常常需要从复杂的背景中快速定位目标物体的精确边界。无论是印刷电路板上的字符识别、机械零件的尺寸测量,还是包装盒的位置校准,准确的目标…...
计算机毕业设计springboot安龙四中网站 基于Spring Boot框架的中学数字化校园门户系统开发 基于Java Web技术的安龙四中智慧校园综合服务平台构建
计算机毕业设计springboot安龙四中网站lh3pp0i6 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着教育信息化2.0行动的深入推进,中小学校园信息化建设已成为提升教…...
PDF-Parser-1.0开箱即用体验:无需配置的PDF解析工具
PDF-Parser-1.0开箱即用体验:无需配置的PDF解析工具 1. 引言:PDF解析的痛点与解决方案 如果你经常需要从PDF文档里提取文字、表格或者公式,肯定遇到过这样的烦恼:要么工具太复杂,配置起来让人头疼;要么效…...
vLLM-v0.17.1精彩案例:Qwen2-72B 4-bit量化后精度保持98.6%
vLLM-v0.17.1精彩案例:Qwen2-72B 4-bit量化后精度保持98.6% 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展成为一个活跃的社区驱动项目,…...
[SGG_AI]1.Python数据分析
1.数据分析概述与环境搭建 1.1 数据分析课程导论 1.1.1 为什么要学数据分析? 功能 Excel Python (Pandas) 数据处理量 1万行以内 100万行以上 自动化 手动操作 代码一键运行 学习难度 简单 需基础编程知识 传统方法:用Excel手工处理数据…...
基于Python的智能客服机器人课程辅导系统设计与实现:从架构到AI辅助开发实战
痛点分析:传统辅导系统的“三座大山” 在传统的课程辅导场景中,无论是线上论坛、邮件答疑还是简单的FAQ页面,都普遍面临着几个难以逾越的痛点,我称之为“三座大山”。 第一座大山是响应速度慢。学生遇到问题,尤其是在深…...
Windows Defender Remover终极指南:高效移除系统防护的完整方案
Windows Defender Remover终极指南:高效移除系统防护的完整方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mi…...
