Mysql 大表limit查询优化原理
优化前( 查询耗时 114.1s)
explain select * from link_exec_task limit 80000, 10 # 查询耗时 114.1s
优化后( 查询耗时 0.121s)
explain select * from link_exec_task a
INNER JOIN (select id from link_exec_task limit 80000, 10) b on a.id = b.id #0.121s
原理:
观察以下sql 查询计划

查询优化的原因::
主键ID形成的索引是聚簇索引(B+树),叶子节点存的是记录(数据);而普通字段锁形成的索引是非聚簇索引,非聚簇索引的叶子节点里面存的是记录的ID。
查找第8w条,聚簇索引和非聚簇索引对比:
聚簇索引方式:由于你的叶子存的是数据,一个叶子节点占用空间大,故而一次IO可能查询到少数的叶子节点,故而需要IO很多次,才能找到第8w条记录。
非聚簇索引方式:由于你的叶子存的是记录的ID,一个叶子节点占用空间小,故而一次IO可以查询到大量的叶子节点,故而只需要少次IO次,就能快速找到第8w条记录的ID。最后找到10条记录的ID后,再通过连表查询,10条记录的innner join 处理起来就很快了。
故而上面就算我查询哪怕没有用到 status字段进行查询,Innodb执行引擎也会借助status索引字段锁使用的非聚簇索引,来快使找到第8w条记录。
问:为什么借助的是status索引字段,而不使用其他非聚簇索引字段?
答:因为会挑一个索引字段空间占用最小的字段,在该表的索引字段中,就status字段的空间占用最小,这样一次磁盘IO可有查询出更多的索引页。
问:子查询里面可能select id吗?我还能select 其他吗?
答:正常情况下不行,例如你select * ,那么此时你的查询耗时会和优化前查询耗时一样,因为此时你的查询不是覆盖索引查询,由于非聚簇索引里面没有你要select的内容,故而innodb直接就不借助非聚簇索引找第8w条记录;而是直接从聚簇索引里,找出第8w条记录,故而速度会变得很慢。
当然,除非你select 的字段已经在非聚簇索引树里面了,此时还是使用覆盖索引,还是走非聚簇索引,查询速度也会快。
相关文章:
Mysql 大表limit查询优化原理
优化前( 查询耗时 114.1s) explain select * from link_exec_task limit 80000, 10 # 查询耗时 114.1s优化后( 查询耗时 0.121s) explain select * from link_exec_task a INNER JOIN (select id from link_exec_task limit 80000, 10) b on a.id b.id #0.121s原理&…...
封装axios、环境变量、api解耦、解决跨域、全局组件注入
官网:Axios中文文档 | Axios中文网 安装:npm install axios axios封装: // 1. 引入axios import axios from "axios"; import storage from /utils/storage // 2. 创建axios实例 const instance axios.create({baseURL: proces…...
CDGP|数据治理于企业而言到底有什么用?
在当今数字化时代,数据已成为企业最重要的资产之一。无论是大型跨国公司还是初创型企业,数据都扮演着驱动决策、优化运营和推动创新的关键角色。然而,仅仅拥有大量的数据并不足以确保企业的成功。如何有效管理、整合和利用这些数据࿰…...
Java学习教程,从入门到精通,Java数组(Arrays)语法知识点及案例(19)
1、Java数组(Arrays)语法知识点及案例 一、数组的基本概念 数组是多个相同类型的数据按照一定的顺序排列的集合,使用一个名字命名,通过编号(索引)的方式对这些数据进行统一管理。数组是引用数据类型&…...
11.4OpenCV_图像预处理习题02
1.身份证号码识别(结果:身份证号识别结果为:911124198108030024) import cv2 import numpy as np import paddlehub as hubdef get_text():img cv2.imread("images1/images/shenfen03.jpg")# 灰度化gray_img cv2.cvt…...
go的template示例
模板定义: type Config struct {{{- $len : len .DbConfigs -}}{{- $i : 0 -}}{{- range $key, $value : .DbConfigs}}{{title $key}} *DbConfig "yaml:\"{{lower $key}}\"" {{if lt $i (sub $len 1)}},{{end}}{{- $i add $i 1 -}}{{- end…...
『YOLO』| 断点训练、解决训练中断异常情况
文章目录 方法一方法二 当yolo在训练的时候,如果训练中断或者出现异常,可通过修改代码,从上一次断掉处重新训练,实现断点续训。 方法一 第一种方法: 按照官方给出的恢复训练代码,用yolo命令格式ÿ…...
MQTT+Disruptor 提高物联网高并发
基于springboot2.5.7 废话不多说,直接上干货: Slf4j Configuration EnableConfigurationProperties(MqttProperties.class) IntegrationComponentScan(basePackages {"扫描包路径","扫描包路径"}) public class MqttAutoConfig {…...
SpringBoot项目集成ONLYOFFICE
ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化、表格中的 RTL 支持等更新 文章目录 前言ONLYOFFICE 产品简介功能与特点Spring Boot 项目中集成 OnlyOffice1. 环境准备2. 部署OnlyOffice Document Server3. 配置Spring Boot项目4. 实现文档编辑功…...
用于nodejs的开源违禁词检测工具 JavaScript node-word-detection
地址 : https://www.npmjs.com/package/node-word-detection github地址: https://github.com/xiaobaidadada/node-word-detection 非常节省内存的轻量级快速违禁词、词典库 检测工具 、 50万个词大约需要300MB内存、被检测的文本100字内结果在1毫秒左右。本项目没有提供词库请…...
FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。
上图是在安防领域的要求,一般都是一个屏幕上有显示多个摄像头捕捉到的画面,这一节,我们是从文件中读取多个文件,显示在屏幕上。...
Linux权限问题(账号切换,权限,粘滞位)
1.什么是权限? 在Linux下有两种用户,分别是超级用户(root)和普通用户。超级用户可以在Linux下做任何事情,几乎不受限制,而普通用户一般只能在自己的工作目录下(/home/xxx)工作&#…...
el-upload,上传文件,后端提示信息,前端需要再次重新上传(不用重新选择文件)
1.el-upload 上传附件: <el-uploadref"upload":action"upload.url ?updateSupport upload.updateSupport":auto-upload"false":disabled"upload.isUploading":headers"upload.headers":limit"1"…...
数字信号处理Python示例(5)使用实指数函数仿真PN结二极管的正向特性
文章目录 前言一、二极管的电流-电压关系——Shockley方程二、PN结二极管正向特性的Python仿真三、仿真结果分析写在后面的话 前言 使用Python代码仿真了描述二极管的电流-电压关系的Shockley方程,对仿真结果进行了分析,说明在正向偏置区域,…...
ctfshow(89,90,92,93)--PHP特性--intval函数
Web89 源代码: include("flag.php"); highlight_file(__FILE__);if(isset($_GET[num])){$num $_GET[num];if(preg_match("/[0-9]/", $num)){die("no no no!");}if(intval($num)){echo $flag;} }审计 GET传参num。 如果在参数num中…...
构建ubuntu22.04.4私有源服务以及配置ubuntu私有源
构建ubuntu22.04.4私有源服务以及配置ubuntu私有源 一、环境说明1.1 私有源服务器1.2 客户机二 、构建私有源服务2.1 服务构建2.2 发布新的deb包到源服务器1. 准备新的 `.deb` 包2. 将 `.deb` 包添加到仓库目录3. 更新 `Packages` 文件4. 更新仓库的发布文件(可选)5. 通知客户…...
模块功能的描述方法
目录 行为描述方法 语句块 过程赋值语句 高级程序语句 循环语句 数据流描述 结构描述 混合描述方法 module 模块名(端口列表); // 模块声明// 端口定义input [数据类型] [位宽] 输入端口列表; output [数据类型] [位宽] 输出端口列表; inout [数据类…...
【WPF】MatrixTransform类
【WPF】MatrixTransform类 主要特性使用场景示例 在WPF(Windows Presentation Foundation)中,MatrixTransform 类是用于表示一个仿射变换的类,它允许开发者通过一个矩阵来定义一个二维空间中的线性变换。这种变换可以包括平移&…...
【C++】继承的理解
1.继承的概念和定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段,它允许程序员在 保 持原有类特性的基础上进行扩展 ,增加功能,这样产生新的类,称派生类。继承 呈现了面向对象 程序…...
day50 图论章节刷题Part02(99.岛屿数量 深搜、99.岛屿数量 广搜、100.岛屿的最大面积)
前言:前段时间论文开题落下了很多进度,今天开始会尽快赶上 99.岛屿数量 深搜 思路:对地图进行遍历遇到一个没有遍历过的陆地节点,计数器就1,并把该节点所能遍历到的陆地都标记上;遇到标记过的陆地节点和海…...
intv_ai_mk11GPU利用率提升:Llama中型模型批处理与并发请求调优方案
intv_ai_mk11 GPU利用率提升:Llama中型模型批处理与并发请求调优方案 1. 背景与挑战 intv_ai_mk11 是基于 Llama 架构的中等规模文本生成模型,在实际部署中我们发现单请求处理时GPU利用率往往不足30%。这种低效的资源使用导致两个主要问题:…...
华为OD生存指南:转正挑战、身份认知与职业适配
1. 华为OD转正挑战的真相 刚入职华为OD时,很多人都会被HR描述的转正路径所吸引。四步转正流程听起来清晰明了:有HC、拿绩效A、通过可信认证、工作满一年。但真正进入这个体系后,你会发现每个环节都暗藏玄机。 关于HC(Head Count…...
3个方法突破访问限制:Bypass Paywalls Clean让优质内容触手可及
3个方法突破访问限制:Bypass Paywalls Clean让优质内容触手可及 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 当一位医学研究员在凌晨三点急需查阅最新临床研究…...
生物信息学实战指南 | GSEA富集分析从原理到R语言实现
1. GSEA富集分析入门:为什么它比传统方法更强大 第一次接触GSEA(Gene Set Enrichment Analysis)时,我和大多数初学者一样困惑:明明已经有GO和KEGG这些传统富集分析方法了,为什么还要用GSEA?直到…...
3步掌握DDrawCompat:轻松解决Windows老游戏兼容性的终极方案
3步掌握DDrawCompat:轻松解决Windows老游戏兼容性的终极方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/…...
企业级OA系统高可用方案:泛微ecology+Nginx负载均衡最佳实践
企业级OA系统高可用架构设计与实践:泛微ecologyNginxResin全栈解决方案 在数字化转型浪潮中,办公自动化系统(OA)已成为企业核心IT基础设施。作为国内领先的协同管理平台,泛微ecology承载着企业关键业务流程,其稳定性直接影响组织运…...
为什么选择Drawflow:5大优势让你爱上这个流程图库
为什么选择Drawflow:5大优势让你爱上这个流程图库 【免费下载链接】Drawflow Simple flow library 🖥️🖱️ 项目地址: https://gitcode.com/gh_mirrors/dr/Drawflow Drawflow是一个简单而强大的JavaScript流程图库,专为创…...
告别Bad Username or Password:手把手教你用MQTTX正确连接OneNET物联网开发平台(附Token生成避坑点)
物联网开发实战:OneNET平台MQTT连接全流程解析与避坑指南 在物联网项目开发中,MQTT协议因其轻量级和高效性成为设备连接的首选方案。而OneNET作为国内主流的物联网平台,为开发者提供了完整的MQTT接入能力。但在实际对接过程中,&q…...
StructBERT中文语义匹配实战:一键部署+可视化进度条,小白也能用
StructBERT中文语义匹配实战:一键部署可视化进度条,小白也能用 1. 工具概览:你的中文句子"CT扫描仪" 想象一下,你手上有两份用户反馈:"这个手机电池很耐用"和"这款设备续航能力超强"。…...
嵌入式系统数据校验算法详解与实践
1. 单片机校验算法的重要性在嵌入式系统开发中,数据校验是确保通信可靠性和数据完整性的基础保障。我从事嵌入式开发十多年来,见过太多因为忽略校验而导致系统故障的案例。比如2018年参与的一个工业控制项目,由于CAN总线通信没有采用CRC校验&…...
