Mysql面试的技术名词
面试的技术名词
面试一般会遇到一些名词,其实可能自己都知道其中的道理,但是因为没了解过,当时心里就一句WC,然后弱弱答一句:不好意思这个我只是听过,具体还没了解过;
- 回表
- 覆盖索引
- 最左前缀匹配
- 索引下推
1、回表
所谓的回表就是因为普通索引的叶子节点中存储的不是行数据而是主键的值,然后通过主键值到主键索引树中的叶子节点获取具体的值;

首先表中有5条基本数据;

下图为主键索引树(B+Tree)的简化模型:

下图为回表的简化流程图:
在普通索引树中获取主键id的值,然后再到主键索引树中回去主键索引对应的行数据,此过程称之为回表;

2、索引覆盖
所谓的索引覆盖就是:只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表,速度更快。

上图为age的索引树 如果你只需要获取id 和 age 在此树中已经可以直接获取, 没必要进行回表操作;

3、最左前缀匹配
当建立组合索引时,如果按照建立索引的顺序如果最左列没有命中,则组合索引失效;

当content没有命中索引时,age的索引失效;

4、 索引下推
l 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询
l 索引下推在非主键索引上的优化,可以有效减少回表的次数,大大提升了查询的效率。
在employee表中建立组合索引lastName和age


Mysql5.6以前:
会忽略age这个字段,直接通过name进行查询,在(name,age)这课树上查找到了两个结果,id分别为2,6,然后拿着取到的id值一次次的回表查询,因此这个过程需要回表两次。
Mysql5.6以及5.6以后版本:
并没有忽略age这个字段,而是在索引内部就判断了age是否等于20,对于不等于20的记录直接跳过,因此在(name,age)这棵索引树中只匹配到了id为6一个记录,此时拿着这个id去主键索引树中回表查询全部数据,这个过程只需要回表一次。
Mysql面试的技术名词的更多相关文章
- MySql 面试开发技术点汇总
表结构设计 1.为什么一定要设一个主键? 答:因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键.所以啦,反正都要生成一个主键,那你还不如自己指定一个主键,在有些情况下,就能显 ...
- mysql索引技术名词1-5
目录 索引技术名词 1.回表 2.覆盖索引 3.最左匹配原则 4.索引下推 5.谓词下推 索引技术名词 1.回表 注意: 1.如果依靠主键查询,叶子结点直接存储数据----主键B+树 2.如果依靠其他 ...
- java架构之路-(面试篇)Mysql面试大全
说一下mysql比较宏观的面试,具体咋写sql的这里就不过多举例了.后面我还会给出一个关于mysql面试优化的试题,这里主要说的索引和B+Tree结构,很少提到我们的集群配置优化方案. 1.索引是什么 ...
- [转帖]MySQL的又一神器-锁,MySQL面试必备
MySQL的又一神器-锁,MySQL面试必备 https://segmentfault.com/a/1190000020762791 lock 低一级的是 latch 原文链接:blog.ouya ...
- 《为研发同学定制的MySQL面试指南》-- 连载中
Hi大家好,我是来自博客园的赐我白日梦! 为大家带来MySQL面试专题!全文110篇!以问答的方式,由浅入深的帮你应对各类MySQL面试题的狂轰滥炸!当然也不乏会分享一些高阶读写分离数据库中间件原理及 ...
- 《MySQL面试小抄》索引失效场景验证
我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统,自己无法快速定位到关键问题点!!! 本期主要面试考点 面试官考点之什么情况下会索 ...
- MySQL表分区技术
MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...
- [Java Web] 1、Web开发初识——一大堆历史和技术名词
LZ前言 LZ最近发现网络真是个神奇的东西,以前做的好玩的只能自娱自乐(或者说顾影自怜),现在只要发一个帖子,写一个博客,很快能引来一大群小伙伴的围观(有时候还能遇见几个大牛给个战略性的指导)...L ...
- MySQL的优化技术总结
MySQL的优化技术总结 如果Cache很大,把数据放入内存中的话,那么瓶颈可能是CPU瓶颈或者CPU和内存不匹配的瓶颈: seek定位的速度,read/write即读写速度: 硬件的提升是最有效的方 ...
随机推荐
- 聊聊select, poll 和 epoll
聊聊select, poll 和 epoll 假设项目上需要实现一个TCP的客户端和服务器从而进行跨机器的数据收发,我们很可能翻阅一些资料,然后写出如下的代码. 服务端 void func(int s ...
- Android JetPack组件-CameraX初探
CameraX 又是一个 Google 推出的 JetPack 组件 ,是一个新鲜玩意儿,故给大家分享下我在项目中的使用过程心得.. CameraX 是什么? Google 开发者文档 对 Camer ...
- golang server示例
一个简单的web服务器 package main import ( "fmt" "log" "net/http" ) func main() ...
- STM32 CubeIDE快速创建工程(图文详解)
使用STM32CubeIDE快速创建STM32的HAL库工程. 文章目录 1 STM32CubeIDE Home 2 生成工程 3 程序下载 1 STM32CubeIDE Home 进入到官网的下载界 ...
- FOC中的Clarke变换和Park变换详解(动图+推导+仿真+附件代码)
文章目录 1 前言 2 自然坐标系ABC 3 αβ\alpha\betaαβ 坐标系 3.1 Clarke变换 3.2 Clarke反变换 4 dqdqdq 坐标系 4.1 Park变换 正转 反转 ...
- 【OracleDB】 01 概述和基本操作
实例概念: Oracle有一个特殊的概念 Oracle数据库 = 数据库 + Oracle文件系统 + Oracle实例 实例处理Oracle的请求,调用文件系统 然后返回结果响应给客户端 单实例和多 ...
- Java 在Excel中创建透视表
本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具—Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并 ...
- angular js 页面修改数据存入数据库
一.编写service,修改数据要根据ID回显数据 //根据ID查询 public Brand findById(Long id); //修改 public int update(Brand bran ...
- Jmeter自动发送邮件
自动发送邮件: 1.自动发送邮件,需要三个jar,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下 2.报错 Ex ...
- vue element-ui el-form-item 循环渲染,验证表单内容
data里面如下图: