你知道mysql的索引下推么?

在此之前,需要先明白mysql内部的一个大致结构,mysql内部大概是划分为3处,client客户端连接,server层,存储引擎层

索引下推是mysql5.6之后内部的一种索引优化手段。

比如现在我有一张表student表,字段有id,name,age,note等等字段,然后我现在对name和age建立了一个组合索引,然后我现在执行一条语句:

select * from student where name like '周%' and age > 25;

我们知道此时这个组合索引是一个辅助索引树结构,说到辅助索引肯定就联想到回表,但是辅助索引会不会回表,取决于是否是覆盖索引。很明显,现在是*,查询所有字段,不是覆盖索引,那么就一定会回表,那么在mysql5.6,没有索引下推的时候,是以下这样执行的:

 尽管建立了联合索引,但是Mysql5.6之前在储存引擎层的时候,还是只会通过辅助索引树的叶子结点找到name是为姓周的,而age是不管的(Mysql5.6的时候会管),然后再通过叶子结点上索引对应的主键ID回表主键索引树,找到主键对应的行记录,然后再把周的那些行记录返回给Mysql的Server层,Mysql服务层再此层再筛选出age大于25的行记录,再把结果返回给客户端。那么此时如果姓周的结果是有100人,那么此时就需要回表100次,然后Mysql服务层再筛选出符合age > 25的记录给客户端。那么能不能就一次性在辅助索引树上就把姓周并且age> 25的筛选出来,那么这样的话就可以只回表一次,然后直接将最终结果返回给Mysql的Server层既可。这样就可以大大减少回表次数了。

所以在Mysql5.6之后,Mysql内部对此进行了优化也就是索引下推

由于建立了联合索引,那么通过辅助索引树的叶子节点找到name是姓周的,同时会把age > 25的也筛选出来,然后最终满足的记录比如是2条,再回表2次查询主键索引树,然后把2条结果返回给Mysql的Server层,Mysql的Server层再直接把数据返回给客户端大大减少了回表次数。

没有使用索引下推,回表次数多,Mysql的Server层需要筛选记录。

使用索引下推,回表次数少,Mysql的Server层不需要筛选记录,直接返回给客户端。

总结:

        索引下推是Mysql5.6之前在数据库内部为了减少回表次数而优化的一个点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的基础命令

1.SQL的基本概念 SQL 是用于管理和操作关系型数据库的标准编程语言。是所有关系型数据库(如 MySQL、PostgreSQL、Oracle 等)的通用语言。 SQL语句分类 DDL: Data Defination Language 数据定义语言 CREATE,DROP,ALTER DML: Da…

Python爬虫实战:研究加密参数的定位方法,实现逆向解密

一、引言 在数字化信息时代,网络数据成为重要的战略资源。Python 以其简洁的语法和丰富的库生态,成为网络爬虫开发的首选语言。然而,随着互联网安全防护意识的增强,网站普遍采用加密技术保护数据接口,如请求参数加密、会话验证、动态令牌等,这使得传统爬虫技术面临巨大挑…

轴承表面缺陷检测数据集VOC+YOLO格式3945张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3945 标注数量(xml文件个数):3945 标注数量(txt文件个数):3945 标注…

【51单片机中断】

目录 配置流程 1.在IE寄存器中开启总中断通道和需要的某中断通道 2.在TCON寄存器开启所用中断的触发方式 3.使用中断函数完成中断 4.若需要中断嵌套则在IP寄存器中配置 5.若需要使用串口的中断,则配置SCON寄存器 6.代码示例 配置流程 1.在IE寄存器中开启总…

【机器学习】Anaconda安装后打不开jupyter notebook(网页不自动跳出)

文章目录 一、遇到的问题:jupyter notebook网页不自动跳出(一)输入jupyter notebook命令(二)手动打开网页 二、解决办法:指定浏览器(一)找文件 jupyter_notebook_config.py&#xff…

数字格式化库 accounting.js的使用说明

accounting.js 是一个用于格式化数字、货币和金额的轻量级库,特别适合财务和会计应用。以下是其详细使用说明: 安装与引入 通过 npm 安装: bash 复制 下载 npm install accounting 引入: javascript 复制 下载 const accounting …

DeepSpeed简介及加速模型训练

DeepSpeed是由微软开发的开源深度学习优化框架,专注于大规模模型的高效训练与推理。其核心目标是通过系统级优化技术降低显存占用、提升计算效率,并支持千亿级参数的模型训练。 官网链接:deepspeed 训练代码下载:git代码 一、De…

集星獭 | 重塑集成体验:新版编排重构仿真电商订单数据入库

概要介绍 新版服务编排以可视化模式驱动电商订单入库流程升级,实现订单、客户、库存、发票、发货等环节的自动化处理。流程中通过循环节点、判断逻辑与数据查询的编排,完成了低代码构建业务逻辑,极大提升订单处理效率与业务响应速度。 背景…

AMO——下层RL与上层模仿相结合的自适应运动优化:让人形行走操作(loco-manipulation)兼顾可行性和动力学约束

前言 自从去年24年Q4,我司「七月在线」侧重具身智能的场景落地与定制开发之后 去年Q4,每个月都会进来新的具身需求今年Q1,则每周都会进来新的具身需求Q2的本月起,一周不止一个需求 特别是本周,几乎每天都有国企、央企…

MATLAB中进行语音信号分析

在MATLAB中进行语音信号分析是一个涉及多个步骤的过程,包括时域和频域分析、加窗、降噪滤波、端点检测以及特征提取等。 1. 加载和预览语音信号 首先,你需要加载一个语音信号文件。MATLAB支持多种音频文件格式,如.wav。 [y, fs] audiorea…

JWT令牌验证

一、JWT 验证方式详解 JWT(JSON Web Token)的验证核心是确保令牌未被篡改且符合业务规则,主要分为以下步骤: 1. 令牌解析与基础校验 收到客户端传递的 JWT 后,首先按 . 分割为三部分:Header、Payload、S…

一文讲清python、anaconda的安装以及pycharm创建工程

软件下载 Pycharm下载地址: Other Versions - PyCharm anaconda下载地址: https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Windows-x86_64.exe 安装步骤 一、 Python 解释器的安装步骤 安装目录介绍: 二、 Anaconda 安装 2.1 安装步…

Mac如何允许安装任何来源软件?

打开系统偏好设置-安全性与隐私,点击右下角的解锁按钮,选择允许从任何来源。 如果没有这一选项,请到打开终端,输入命令行:sudo spctl --master-disable, 输入命令后回车,输入电脑的开机密码后回车。 返回“…

React Flow 中 Minimap 与 Controls 组件使用指南:交互式小地图与视口控制定制(含代码示例)

本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示​例与实战源)。完整介绍…

Windows Ubuntu 目录映射关系

情况一:你是通过 WSL (Windows Subsystem for Linux) 安装 Ubuntu 这是最常见的情况。如果你在 Microsoft Store 安装了 “Ubuntu”,默认就是 WSL。 📁 目录映射关系如下: 从 Ubuntu(WSL)访问 Windows&…

双指针法高效解决「移除元素」问题

双指针法高效解决「移除元素」问题 双指针法高效解决「移除元素」问题一、问题描述二、解法解析:双指针法1. 核心思想2. 算法步骤3. 执行过程示例 三、关键点分析四、复杂度分析五、与其他解法的比较1. 快慢指针法2. 本解法的优势 六、实际应用场景七、总结 双指针法…

知识图谱构架

目录 知识图谱构架 一、StanfordNLP 和 spaCy 工具介绍 (一)StanfordNLP 主要功能 使用示例 (二)spaCy 主要功能 使用示例 二、CRF 和 BERT 的基本原理和入门 (一)CRF(条件随机场&…

激光三角测量标定与应用

文章目录 1,介绍。2,技术原理3,类型。3.1,直射式3.2,斜射式3.3,两种三角位移传感器特性的比较 4,什么是光片?5,主要的算子。1,create_sheet_of_light_model2&…

高可用消息队列实战:AWS SQS 在分布式系统中的核心解决方案

引言:消息队列的“不可替代性” 在微服务架构和分布式系统盛行的今天,消息队列(Message Queue) 已成为解决系统解耦、流量削峰、异步处理等难题的核心组件。然而,传统的自建消息队列(如RabbitMQ、Kafka&am…

人工智能核心知识:AI Agent 的四种关键设计模式

人工智能核心知识:AI Agent 的四种关键设计模式 一、引言 在人工智能领域,AI Agent(人工智能代理)是实现智能行为和决策的核心实体。它能够感知环境、做出决策并采取行动以完成特定任务。为了设计高效、灵活且适应性强的 AI Age…