MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
1. limit 100000,10 和 limit 10区别
-
LIMIT 100000, 10:- 这个语句的意思是,从查询结果中跳过前100000条记录,然后返回接下来的10条记录。
- 这通常用于分页查询中,当你需要跳过大量的记录以获取后续的记录时。例如,如果你有一个包含大量数据的查询结果,你可能想要查看第100001页的数据,每页显示10条记录,这时就会使用这种形式的
LIMIT子句。
-
LIMIT 10:- 这个语句的意思是,返回查询结果的前10条记录。
- 这是一个非常常见的用法,用于限制查询结果的数量,特别是在你只需要一小部分数据时。例如,你可能只想查看表中的前10条记录,或者在进行测试时限制返回的数据量。
2. 超大分页优化思路
覆盖索引加子查询
优化思路:分页查询时通过创建覆盖索引提高性能,再通过覆盖索引加子查询的形式进行优化
举例:
假设有一个 users 表,结构如下:
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100),email VARCHAR(100),created_at TIMESTAMP
);
我们想要获取从第 1000001 条到第 1000010 条记录的用户名字(即分页)
优化前的 SQL 查询
SELECT name FROM users
ORDER BY id
LIMIT 1000000, 10;
全表扫描:这个查询没有使用子查询,因此 MySQL 必须从第一条记录开始,扫描直到跳过前 1000000 条记录,然后返回接下来的 10 条记录。
性能问题:当表中的记录数非常大时,这种方式会导致显著的性能下降,因为数据库需要遍历大量的记录,导致高的 IO 开销。
优化后的 SQL 查询
-- 创建覆盖索引,包含需要查询的字段(id和name)
CREATE INDEX idx_id_name ON users(id, name);
然后使用子查询优化
SELECT name FROM users
WHERE id IN (SELECT id FROM (SELECT id FROM users ORDER BY id LIMIT 1000000, 10) AS temp
);
内部子查询:SELECT id FROM users ORDER BY id LIMIT 1000000, 10
- 这个子查询的作用是从
users表中获取id从 1000001 到 1000010 的记录。 - 这里会使用到
id的索引来快速定位到对应的位置及1000001,而不会从头开始遍历所有记录
外部查询:SELECT name FROM users WHERE id IN (...)
- 外部查询使用内层子查询的结果,获取这些
id对应的用户name。
覆盖索引的使用
- 覆盖索引:在
CREATE INDEX idx_id_name ON users(id, name);中创建的索引包含了查询需要的所有列id和name。 - 由于外部查询只选择了
name列,且查询条件中使用了id,MySQL 可以直接从索引中获取id和name,避免了对users表的回表操作。
3.面试题
3.1 什么是覆盖索引?
3.2 MySQL超大分页怎么处理?

相关文章:
MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
1. limit 100000,10 和 limit 10区别 LIMIT 100000, 10: 这个语句的意思是,从查询结果中跳过前100000条记录,然后返回接下来的10条记录。这通常用于分页查询中,当你需要跳过大量的记录以获取后续的记录时。例如,如果你…...
RabbitMQ 实现消息队列负载均衡
在现代应用程序中,消息队列是一种重要的架构模式,用于解耦服务、处理异步任务和实现负载均衡。其中,RabbitMQ是一个广泛使用的开源消息代理,提供了高可用性、可靠性和灵活性。本文将展示如何使用Python及其pika库来实现RabbitMQ&a…...
嵌入式linux中HTTP协议原理基本分析
第一:HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维…...
thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql
最近接了一个陪玩小程序,其中有一个实时聊天的项目,需要搭建Websocke服务,通过多方考虑选择了通过GatewayWorker框架(基于Workerman),将代码提取了出来,用到的框架封装到了vendor目录下,完整前后…...
浅谈射频应用
射频(Radio Frequency,缩写为RF)是一种高频交流变化电磁波的简称,其频率范围广泛,从几十千赫兹跨越至几百吉赫兹。射频技术在多个领域有着广泛的应用: 1、通信领域:射频技术是现代通信领域的重要…...
SAP(PP生产制造)拆解工单业务处理
1、BOM维护 要拆解的成品或半成品要和原成品、半成品BOM一致 2、创建拆解工单 CO01选择拆解工单的类型,以及填写拆解的物料和拆解工厂 维护工单组件 注意: 1、拆解入库组件的数量需要维护为负数 2、拆解工单投料组件数量维护为正数 3、拆解工单收发…...
《Python游戏编程入门》注-第4章2
《Python游戏编程入门》的“4.2.2 键盘事件”中介绍了通过键盘事件来监听键盘按键的方法。 1 键盘事件 玩家点击键盘中某个按键实际上包含了两个动作:点击按键和释放按键,也就是按键按下和松开。按键按下的对应的事件是KEYDOWN,按键松开对应…...
deque
deque 底层数据结构 动态开辟的二维数组第一维数组中存放的是第二维数组的指针每个第二维数组大小为512字节。假如存放的是**_Tp类型,每个第二维数组存放512/(sizeof(_Tp**))个元素按照第一维数组大小二倍进行扩容 举例 当deque进行push_back,将下半部分空间元素…...
YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
一、本文介绍 本文记录的是利用Strip Pooling模块优化YOLOv11的目标检测网络模型。Strip Pooling结合了长而窄的卷积核形状在一个空间维度上的长程关系捕捉能力和在另一个空间维度上的局部细节捕捉能力,有效地处理复杂的场景信息。这一机制通过采用 1 N 1N 1N或 N 1 N1 N1的…...
yt-dlp下载视频
插件官方下载地址 通过以下命令行使用 yt-dlp下载 (base) D:\tool\video>cd D:\tool\video (base) PS D:\tool\video> .\vdownlod.bat 此处输入链接或者(base) D:\tool\video>yt-dlp -f bv[extmp4]ba[extm4a] --cookies d:\Downloads\www.youtube.com_cookies.txt -…...
oracle insert忽略主键冲突,忽略重复记录
在INSERT语句中使用IGNORE_ROW_ON_DUPKEY_INDEX提示: INSERT /* IGNORE_ROW_ON_DUPKEY_INDEX(table_name, index_name) */ INTO table_name(column1, column2) VALUES(value1, value2); 或 INSERT /* IGNORE_ROW_ON_DUPKEY_INDEX(table_name(column_name)) */ …...
小新学习k8s第四天之发布管理
一、金丝雀发布(灰度发布) Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。 ①比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的…...
01_IAR新建CC2530工程
IAR建立CC2530工程 前言 由于很多Zigbee商家提供的教程未有从零建立CC2530工程的讲解,可能会导致后面的开发中出现一些琐碎的问题。本文将以LED流水灯为例,从0到1用IAR建立CC2530工程。 IAR介绍 IAR Embedded Workbench被广泛应用于消费电子、…...
原生鸿蒙的竞争力到底如何?
目录 1. 崛起与挑战2. 安全机制3. 自动化检测前移4. 深入探讨开发者服务优势 1. 崛起与挑战 长期以来,移动操作系统市场被IOS和安卓所垄断,一直都难以推出完整的自主系统,面临诸多挑战,如推广困难、应用适配难度大,以及…...
数字化生态平台:关键功能全解析
在当今数字化浪潮中,数字化生态平台正发挥着举足轻重的作用。那么,它的关键功能究竟有哪些呢?让我们一探究竟。 首先,数据集成与管理是数字化生态平台的重要功能之一。它能够从多个来源收集数据,包括企业内部系统、外…...
c 到 c++ 过渡
c基础入门 #include <iostream> #include <cmath> #include <unistd.h> // 总结:按照书写依次往下,先看 iostream 再看 cxxx 最后 xxx.husing namespace std; // 本质:自定义作用域,作用域就在该命名空间内部。…...
[linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
本文档模拟vexpress-a9开发板,作为铁头娃,要学就学最新的包 已经上传到github仓库 目录 编译qemu-9.1编译linux-kernel-6.11编译busybox-1.36.1NFS挂载 1. qemu-stable-9.1源码编译安装 1.1. 下载qemu源码的stable-9.1分支 仓库地址 mkdir qemu_9.…...
019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)
如下图所示,获取多个实体的最大包围盒,用红色线表示: 也可单独选圆的包围盒 部分代码如下: using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using A…...
【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
你好,C++并发世界
C并发编程的主要目的是任务隔离和提高性能 是的,C并发编程的主要目的是任务隔离和提高性能。具体来说,可以总结为以下几点: 任务隔离:通过并发编程,程序可以将不同的任务或计算分隔开,这样可以防止它们之间…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
