当前位置:网站首页>简述聚簇索引、二级索引、索引下推
简述聚簇索引、二级索引、索引下推
2022-07-25 17:42:00 【一恍过去】
1、聚簇索引
InnoDB索引分为两种:
- 聚簇索引: 一般建表时的主键就会被mysql作为聚簇索引,如果没有主键则选择非空唯一的索引作为聚簇索引,都没有则隐式创建一个索引作为聚簇索引
- 辅助索引: 也就是非聚簇索引或二级索引,平时我们添加的索引就是辅助索引;
聚簇索引并不是一种单独的索引类型,而是一种数据存储方式,就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,所以主键索引默认就使用到了聚簇索引。
2、二级索引(辅助索引)
创建一张表时默认会为主键创建聚簇索引,聚簇(主键)索引的叶子节点存的是整行数据。
除了聚簇(主键)索引以外的所有索引都称为二级索引也就是非主键索引,二级索引的叶子节点内容是主键的值,主键长度越小,二级索引的叶子节点就越小,占用的空间也就越小;
二级索引在查询需要多扫描一棵索引树,也就是回表,通过覆盖索引和默认的索引下推机制可以避免回表;
3、回表
回表: 就是先通过索引扫描出数据所在的行,再通过行主键索引获取其他字段数据。
简单说就是:查询的字段中既有索引字段,又有非索引字段就会发生回表。
比如索引字段为name
# 该查询使用了索引,并且索引中只有name的数据,但是却查询了所有字段,此时就会回表获取其他字段的值
# 通过索引name找到数据行,然后再通过主键找到其他字段值
select * from table where name = '';
主键索引查询: 主键被作为聚簇索引,索引中保存了所有的列数据,可以直接通过主键定位到数据并返回;
辅助索引查询: 辅助索引中除了包含了索引对应字段值以及主键值,如果查询的字段全是索引字段,就直接通过索引返回数据;如果查询的字段除了索引字段,还包含之其他的字段,则通过辅助索引查找到主键,再通过主键到聚簇索引中查找对应的数据==(也就是回表)==
可以通过覆盖索引和默认的索引下推机制可以避免回表;
4、索引下推(CIP)
ICP 就是把索引扫描和索引过滤合并在一起处理,过滤后的记录数据下推到存储引擎后的一种索引优化策略。
索引条件下推默认是开启的,可以使用系统参数optimizer_switch来控制器是否开启。
索引下推优点如下:
1.减少了回表的操作次数。
2.减少了上传到 MySQL SERVER 层的数据。
索引下推使用条件:
只能用于
range、ref、eq_ref、ref_or_null访问方法;只能用于
InnoDB和MyISAM存储引擎及其分区表;对
InnoDB存储引擎来说,索引下推只适用于二级索引(非主键索引);引用了子查询的条件不能下推;
引用了存储函数的条件不能下推,因为存储引擎无法调用存储函数。
MySQL 服务层: 用来解析 SQL 的语法、语义、生成查询计划、接管从 MySQL 存储引擎层上推的数据进行二次过滤等等。
MySQL 存储引擎层: 按照 MySQL 服务层下发的请求,通过索引或者全表扫描等方式把数据上传到 MySQL 服务层。
MySQL 索引扫描: 根据指定索引过滤条件 ,遍历索引找到索引键对应的主键值后回表过滤剩余过滤条件。
MySQL 索引过滤: 通过索引扫描并且基于索引进行二次条件过滤后再回表。
边栏推荐
- 「数字安全」警惕 NFT的七大骗局
- Notes on Flickr's dataset
- Headless mode of new selenium4.3 in egde browser
- PostgreSQL里有只编译语句但不执行的方法吗?
- With 8 years of product experience, I have summarized these practical experience of continuous and efficient research and development
- 04.寻找两个正序数组的中位数
- An article about ultrasonic humidifier
- ACL 2022 | 基于最优传输的对比学习实现可解释的语义文本相似性
- After consulting about how to deal with DDL in Flink SQL client, how to add fields and jobs to the mapping table in Fink SQL?
- Random talk on generation diffusion model: DDPM = Bayesian + denoising
猜你喜欢
随机推荐
【Cadence Allegro PCB设计】永久修改快捷键(自定义)~亲测有效~
Redis源码与设计剖析 -- 15.RDB持久化机制
8 年产品经验,我总结了这些持续高效研发实践经验 · 研发篇
Three dimensional function display of gray image
Tkinter module advanced operations (I) -- transparent buttons, transparent text boxes, custom buttons and custom text boxes
电子产品“使用”和“放置”哪个寿命更长??
自动化测试 PO设计模型
PostgreSQL passwords are case sensitive. Is there parameter control?
01.两数之和
生成扩散模型漫谈:DDPM = 贝叶斯 + 去噪
咨询下flink sql-client怎么处理DDL后,fink sql里面映射表加字段以及JOb?
[cadence Allegro PCB design] permanently modify the shortcut key (customized) ~ it is valid for personal test~
Starting from business needs, open the road of efficient IDC operation and maintenance
[cadence Allegro PCB design] error: possible pin type conflict gnd/vcc power connected to output
Postdoctoral recruitment | West Lake University Machine Intelligence Laboratory recruitment postdoctoral / Assistant Researcher / scientific research assistant
Page table cache of Linux kernel source code analysis
STM32 PAJ7620U2手势识别模块(IIC通信)程序源码详解
Calculation date or date formatting
stm32F407------SPI
Stm32 paj7620u2 gesture recognition module (IIC communication) program source code explanation








