当前位置: 首页 > news >正文

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|数据治理于企业而言到底有什么用?

在当今数字化时代,数据已成为企业最重要的资产之一。无论是大型跨国公司还是初创型企业,数据都扮演着驱动决策、优化运营和推动创新的关键角色。然而,仅仅拥有大量的数据并不足以确保企业的成功。如何有效管理、整合和利用这些数据&#xff0…...

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命令格式&#xff…...

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 上传附件&#xff1a; <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方程&#xff0c;对仿真结果进行了分析&#xff0c;说明在正向偏置区域&#xff0c;…...

ctfshow(89,90,92,93)--PHP特性--intval函数

Web89 源代码&#xff1a; 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&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;MatrixTransform 类是用于表示一个仿射变换的类&#xff0c;它允许开发者通过一个矩阵来定义一个二维空间中的线性变换。这种变换可以包括平移&…...

【C++】继承的理解

1.继承的概念和定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象 程序…...

day50 图论章节刷题Part02(99.岛屿数量 深搜、99.岛屿数量 广搜、100.岛屿的最大面积)

前言&#xff1a;前段时间论文开题落下了很多进度&#xff0c;今天开始会尽快赶上 99.岛屿数量 深搜 思路&#xff1a;对地图进行遍历遇到一个没有遍历过的陆地节点&#xff0c;计数器就1&#xff0c;并把该节点所能遍历到的陆地都标记上&#xff1b;遇到标记过的陆地节点和海…...

intv_ai_mk11GPU利用率提升:Llama中型模型批处理与并发请求调优方案

intv_ai_mk11 GPU利用率提升&#xff1a;Llama中型模型批处理与并发请求调优方案 1. 背景与挑战 intv_ai_mk11 是基于 Llama 架构的中等规模文本生成模型&#xff0c;在实际部署中我们发现单请求处理时GPU利用率往往不足30%。这种低效的资源使用导致两个主要问题&#xff1a;…...

华为OD生存指南:转正挑战、身份认知与职业适配

1. 华为OD转正挑战的真相 刚入职华为OD时&#xff0c;很多人都会被HR描述的转正路径所吸引。四步转正流程听起来清晰明了&#xff1a;有HC、拿绩效A、通过可信认证、工作满一年。但真正进入这个体系后&#xff0c;你会发现每个环节都暗藏玄机。 关于HC&#xff08;Head Count…...

3个方法突破访问限制:Bypass Paywalls Clean让优质内容触手可及

3个方法突破访问限制&#xff1a;Bypass Paywalls Clean让优质内容触手可及 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 当一位医学研究员在凌晨三点急需查阅最新临床研究&#xf…...

生物信息学实战指南 | GSEA富集分析从原理到R语言实现

1. GSEA富集分析入门&#xff1a;为什么它比传统方法更强大 第一次接触GSEA&#xff08;Gene Set Enrichment Analysis&#xff09;时&#xff0c;我和大多数初学者一样困惑&#xff1a;明明已经有GO和KEGG这些传统富集分析方法了&#xff0c;为什么还要用GSEA&#xff1f;直到…...

3步掌握DDrawCompat:轻松解决Windows老游戏兼容性的终极方案

3步掌握DDrawCompat&#xff1a;轻松解决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系统高可用架构设计与实践&#xff1a;泛微ecologyNginxResin全栈解决方案 在数字化转型浪潮中&#xff0c;办公自动化系统(OA)已成为企业核心IT基础设施。作为国内领先的协同管理平台&#xff0c;泛微ecology承载着企业关键业务流程&#xff0c;其稳定性直接影响组织运…...

为什么选择Drawflow:5大优势让你爱上这个流程图库

为什么选择Drawflow&#xff1a;5大优势让你爱上这个流程图库 【免费下载链接】Drawflow Simple flow library &#x1f5a5;️&#x1f5b1;️ 项目地址: https://gitcode.com/gh_mirrors/dr/Drawflow Drawflow是一个简单而强大的JavaScript流程图库&#xff0c;专为创…...

告别Bad Username or Password:手把手教你用MQTTX正确连接OneNET物联网开发平台(附Token生成避坑点)

物联网开发实战&#xff1a;OneNET平台MQTT连接全流程解析与避坑指南 在物联网项目开发中&#xff0c;MQTT协议因其轻量级和高效性成为设备连接的首选方案。而OneNET作为国内主流的物联网平台&#xff0c;为开发者提供了完整的MQTT接入能力。但在实际对接过程中&#xff0c;&q…...

StructBERT中文语义匹配实战:一键部署+可视化进度条,小白也能用

StructBERT中文语义匹配实战&#xff1a;一键部署可视化进度条&#xff0c;小白也能用 1. 工具概览&#xff1a;你的中文句子"CT扫描仪" 想象一下&#xff0c;你手上有两份用户反馈&#xff1a;"这个手机电池很耐用"和"这款设备续航能力超强"。…...

嵌入式系统数据校验算法详解与实践

1. 单片机校验算法的重要性在嵌入式系统开发中&#xff0c;数据校验是确保通信可靠性和数据完整性的基础保障。我从事嵌入式开发十多年来&#xff0c;见过太多因为忽略校验而导致系统故障的案例。比如2018年参与的一个工业控制项目&#xff0c;由于CAN总线通信没有采用CRC校验&…...