首页 > 数据库 >说一说MySQL中的索引下推

说一说MySQL中的索引下推

时间:2024-07-19 22:26:32浏览次数:17  
标签:语句 存储 说一说 下推 索引 引擎 sql MySQL 执行

首先说说索引的分类:

按照物理存储结构划分:聚簇索引、非聚簇索引
按照索引的数据结构划分:B+树索引、Hash索引、Full-Text索引
按照字段属性划分:主键索引、唯一索引、普通索引
按照字段个数划分:单一索引、联合索引
在MySQl中以InnoDB存储引擎为例,建立的索引默认情况下是B+ Tree 索引

明白了索引的分类及默认索引,我们说说一条sql语句的执行过程

1.连接器

连接器通过TCP和客户端建立连接,并校验客户端传过来的用户名和密码,如果某一项不符合规范则报错。校验通过则获取对应用户的权限,并且在后续的执行过程中,都基于此获取到的权限

2. 查询缓存

如果在查询缓存开启的情况下就会先走查询缓存,如果查询缓存中不存在就继续向下执行
(鉴于此处很麻烦,只阐述大致过程,有兴趣的同学请自行了解)

3. 解析器

sql正式执行之前,MySQL会首先进行词法解析,根据你输入的sql语句识别出关键字来构建语法树,然后进行语法分析,语法解析器会根据语法规则进行合法性校验,如果语句有错误或字段不存在则报错

4. 优化器

经过解析器说明你的sql语句没有问题,此时会进行数据库权限认证,没有对应权限直接凉凉,前功尽弃。通过后则由优化器基于成本考虑来走那个索引(表中有多个索引的情况)

5. 执行器

执行器真正执行

此时重点来了!!!

先说大前提 一定是在联合索引的情况下

表结构如图所示
在这里插入图片描述
执行如下sql语句

SELECT * FROM t_student WHERE 年龄 > 20 AND 分数 = 90;

在使用索引下推的情况下:
在执行器执行的时候,Server层首先调用存储引擎层的接口定位到二级索引处,然后先不执行回表操作, 由存储引擎判断后续的条件(分数 = 90)是否符合条件,如果条件不成立则直接跳过二级索引,如果成立则执行回表操作将记录返回给 Server 层。Server 层再判断其他的查询条件是否成立,如果成立则将结果返回给客户端,否则跳过该记录继续向存储引擎索要记录。直到把存储引擎层的记录都读完

执行explain SELECT * FROM t_student WHERE 年龄 > 20 AND 分数 = 90;语句,得到如下结果:
在这里插入图片描述
注意Extra列看到值为 Using index condition 确实走了索引下推

注:在MySQLInnoDB存储引擎下实验,MySQL版本为8.0.36。此篇之分享索引下推相关知识,其他额外内容不做细致分享,请各位朋友自行了解

标签:语句,存储,说一说,下推,索引,引擎,sql,MySQL,执行
From: https://blog.csdn.net/qq_74212030/article/details/140559371

相关文章

  • MySQL数据库基本操作以及使用
    MySQL数据库操纵数据库查看数据库showdatabases;创建数据库createdatabase<database_name>;删除数据库dropdatabase<database_name>;使用数据库usemysql操纵数据表查看数据表showtables;创建数据表CREATETABLETBL_USER(#创建user,tableU_IDINTPR......
  • ORACLE vs MySQL 对组合索引包含IN LIST执行计划研究(ORACLE部分)_PART1
    本文主要研究下组合索引包含in条件(多个值),在单表查询,关联查询这两种SQL查询结果在ORACLE和MySQL里的区别。ORACLE具有强大的优化器,一般来说,组合索引在ORACLE里不管是单表还是关联查询,都可以选择optimal的执行计划,只要统计信息等是准确的。MySQL的优化器相对来说,要弱不少,很多功能不......
  • MySQL安装 | Navicat安装 | 数据库 | 详细安装教程 | 安装包
    ......
  • MySQL Online DDL详解
    一、OnlineDDL的发展历史MySQLOnlineDDL功能从5.6版本开始正式引入,发展到现在的8.0版本,经历了多次的调整和完善。本文主要就OnlineDDL的发展过程,以及各版本的区别进行总结。其实早在MySQL5.5版本中就加入了INPLACEDDL方式,但是因为实现的问题,依然会阻塞INSERT、U......
  • mysql联合索引优化
    【MySQL】之联合索引与最左匹配原则王廷云的博客已于2023-12-1009:48:32修改阅读量2k收藏24点赞数28分类专栏:MySQL文章标签:mysql数据库版权MySQL专栏收录该内容27篇文章3订阅订阅专栏前言:最左匹配原则在我们MySQL开发过程中和面试过程中经常遇到,为了加深印象和......
  • 基于Java和MySQL的数据库优化技术
    基于Java和MySQL的数据库优化技术大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何基于Java和MySQL进行数据库优化,提升系统的性能和稳定性。我们将从查询优化、索引使用、事务管理以及连接池配置几个方面来介绍具体的优化技术。1.查询......
  • java比较mysql两个数据库中差异
    java对比两个库之间差异packagecom.ruoyi.shht;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.tex......
  • 第十一天笔记(MySQL单表)
    ==========================================orderby排序(1)降序(大到小)orderbydesc案例:select*fromhzorderbyiddesc;(2)升序(小到大)asc或不写案例:select*fromhzorderbyidasc;select*fromhzorderbyid;(3)二次排序案例:select......
  • Day44.MySQL安装及主要文件介绍
    1.MySQL下载网址https://www.mysql.com/2.下载流程:         ......
  • mysql8+seaweedfs-csi-driver
     mysql8使用seaweedfs-storage 启动异常如下:mysql07:28:20.10mysql07:28:20.11WelcometotheBitnamimysqlcontainermysql07:28:20.11Subscribetoprojectupdatesbywatchinghttps://github.com/bitnami/containersmysql07:28:20.12Submitissuesandfeatu......