【MySQL】查询访问方法

news2024/11/16 17:34:39

在这里插入图片描述
查询语句经过查询优化器生成 SQL 执行计划,在引入索引的情况下,MySQL 不可能让我们什么查询都是走全表扫描,那样效率太低了,所有需要有各种各样的执行计划 , MySQL 会根据经验为我们的查询语句生成它认为最优的执行计划 。

注意: 虽然有那么多种的执行计划,但是是否走索引,还是看优化器心情 。

一、查询执行方式

1. 全表扫描

2. 走索引

2.1 对主键/唯一二级索引的等值查询

在 B+ 树上进行遍历定位,是非常非常非常快的 。 主键的等值查询只需要遍历一遍 B+ 树 , 唯一二级索引还需要根据得到的主键回表聚簇索引一次 , 但是也是非常快的。

注意 : 唯一二级索引 null 值特殊, 其可有多个空值

2.2 对普通二级索引的等值查询

此时可能返回多条记录, 如果符合条件的记录数过多,过多的回表操作代价非常高 。但是当匹配的记录数量少时,效率还是比较高的。

2.3 对索引列的范围查找

3.4 扫描整个索引

二、访问方法

InnoDB 包括 const / ref / ref_or_null / range / index / all 等访问方法 —— 不可能全记住,遇见再说吧,上面的几项可以概括这些访问方法了 。

具体用不用索引,要看是否回表太多条记录 (比如:所有记录都需要回表 …), 这时候就使用全表扫描 。

三、索引合并

在使用多个索引列进行范围查询的情况下,我们可以先对这些二级索引查询到的所有主键索引 id 值进行索引合并,再进行回表 。

当然,可以使用建立联合索引的方式避免索引合并,这也是比较好的方式 。

3.1 交集合并

AND 操作, 两个二级索引查询到的 id , 取出交集,然后再进行回表

1.多个二级索引, 二级索引是等值匹配
2. 含主键的, 主键可以是范围匹配 (原因 : 二级索引值相同的列是按照主键进行排序的)

3.2 并集合并

OR 操作, 两个二级索引查询到的 id , 取出并集,然后再进行回表

3.3 排序后并集合并

两个二级索引查询到的 id , 先排序,再取出并集,然后再进行回表

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

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

相关文章

mac安装nvm

1、nvm介绍 (1)什么是nvm?简单来说,nvm是一款可以用命令行快速切换node版本的工具! (2)为什么要切换node版本?打个比方,你目前正在用node 14版本,现在出了nod…

Greenplum-主备同步机制

我们在学习Greenplum的架构时知道,Greenplum中主要有Master管理层和Segment计算层。在高可用方面,Master通过配置一个Standby来实现主备,Segment则通过对实例设置镜像的方式也实现主备高可用(其中主实例称为Primary,备…

网络基础(二)

目录 应用层 再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢? 为什么要转换呢? 如果我们将struct message里面…

传输线的物理基础(二):信号在传输线中的速度

铜中电子的速度信号在传输线上传输的速度有多快?如果人们经常错误地认为信号在传输线上的速度取决于导线中电子的速度。凭着这种错误的直觉,我们可能会想象降低互连的电阻会提高信号的速度。事实上,典型铜线中电子的速度实际上比信号速度慢约…

OpenWrt 软路由 IPV6 配置 DDNS

一、申请 dynv6 账号 1、去官网注册一个账号,不过人机验证那块需要 "梯子" 才能注册成功 Free dynamic DNS for IPv6 2、注册成功后,创建一个 Domain 3、这是我创建好的 4、获取 密码,后面需要用到 二、配置 DDNS 1、点击服务菜…

C++之单例模式

目录 1. 请设计一个类,只能在堆上创建对象 2. 请设计一个类,只能在栈上创建对象 3.请设计一个类,不能被拷贝 C98 C11 4. 请设计一个类,不能被继承 C98 C11 5. 请设计一个类,只能创建一个对象(单例模式) 设计…

在GoLand中编译cgo程序

GoLand的C使用问题为什么会出现fyne之类的包无法在GoLand中运行安装gcc安装make安装Choco安装指令使用Choco安装make将make加入Path将GoLand的make路径进行替换测试,编译fyne程序问题 本人go萌新,正在学习golang的界面包fyen,但是在使用GoLa…

Android面试题——JVM

Android平台的虚拟机是基于栈的吗? JVM运行时数据区 运行时栈 基于栈的虚拟机 第0行表示将一个Int型的1推送至操作数栈栈顶,程序计数器指向第0行。第一行字节码表示将栈顶的int型数值存入第一个本地变量,这两行代码就进行了给局部变量赋值的操…

【开源硬件】STM32F030R8T6系统板

【开源硬件】STM32F030R8T6系统板✅STM32F030R8T6系统板兼容极海APM32F030R8T6 🔰支持stm32cubemx工程配置成STM32F030R8T6生成的MDK工程,经过Keil编译后可以直接使用ST-Link v2烧录器上传到极海APM32F030R8T6芯片当中,完全做到平替使用&…

[Java·算法·中等]LeetCode22. 括号生成

每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3👉️ 力扣原文 题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 输入:n 3 输出&…

Unity Lighting -- 配置阴影

本笔记使用URP管线进行说明 配置渲染管线阴影参数 在项目窗口中,主菜单中选择Edit -> ProjectSettings,然后选择Quality,查看当前项目所使用的URP资源,目前例子所使用的资源为UniversalRP_HighQuality资源 在工程窗口中,会有对应的渲染管…

1060:均值

一。题目 1060:均值 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 101855 通过数: 62518 【题目描述】 给出一组样本数据,包含n个浮点数,计算其均值,精确到小数点后4位。 【输入】 输入有两行,第一行包含…

【Echarts】在Vue中使用Echarts

在Vue中使用Echarts引入第三方库vue-echartsvue-echarts安装与使用vue2中使用Echartsvue-echarts安装vue2中使用Echartsvue3中使用Echartsvue-echarts安装vue3中使用Echarts引入第三方库vue-echarts Vue是数据驱动dom,改变数据让图表自动根据数据变化更新&#xff…

Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法(亲测有效)

关于/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.28’ not found出现报错,建议不要使用源码包去编译并升级。在下文有分享一个使用官方的Debian软件包去升级使用的方法。仅供参考! 环境 # uname -a Linux Ubuntu 5.4.0-144-generic #161~18.04.…

ubuntu server 18.04使用tensorflow进行ddqn训练全过程

0. 前言 需要使用ddqn完成某项任务,为了快速训练,使用带有GPU的服务器进行训练。记录下整个过程,以及遇到的坑。 1. 选择模板代码 参考代码来源 GitHub 该代码最后一次更新是Mar 24, 2020。 环境配置: python3.8 运行安装脚本…

超全的命令(代码)执行漏洞无回显的姿势总结(附带详细代码和测试分析过程)

目录 漏洞代码 突破方式 重定向 dnslog外部通信 burpsuite burpcollaborator外部通信 日志监听 netcat监听 反弹shell的各种姿势 漏洞代码 <?php shell_exec($_GET[a]); ?>这里使用了无回显的shell执行函数shell_exec&#xff0c;给html目录的权限是777 突破方…

C++之多态 虚函数表

多态 多态是在不同继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的行为。 需要区分一下&#xff1a;1、菱形虚拟继承&#xff0c;是在继承方式前面加上virtual&#xff1b; class Person {}; class Student : virtual public Person {}; class Teacher…

【深蓝学院】手写VIO第2章--IMU传感器--笔记

0. 内容 1. 旋转运动学 角速度的推导&#xff1a; 左ω∧\omega^{\wedge}ω∧&#xff0c;而ω\omegaω是在z轴方向运动&#xff0c;θ′[0,0,1]T\theta^{\prime}[0,0,1]^Tθ′[0,0,1]T 两边取模后得到结论&#xff1a; 线速度大小半径 * 角速度大小 其中&#xff0c;对旋转矩…

Spring Security 实现自定义登录和认证(1):使用自定义的用户进行认证

1 SpringSecurity 1.1 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>1.2 编写配置类 在spring最新版中禁用了WebSecurityConfigurerAdapter…

04-项目立项:项目方案、可行性分析、产品规划、立项评审

文章目录4.1 项目方案立项阶段4.2 可行性分析4.3 产品规划4.4 立项评审4.4.1 立项说明书的主要内容4.4.2 立项评审流程章节总结4.1 项目方案 学习目标&#xff1a; 能够输出产品项目方案 项目开发设计流程的主要阶段&#xff1a; 立项阶段 → 设计阶段 → 开发阶段 → 测试阶…