当前位置:网站首页>简述聚簇索引、二级索引、索引下推
简述聚簇索引、二级索引、索引下推
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 索引过滤: 通过索引扫描并且基于索引进行二次条件过滤后再回表。
边栏推荐
- Postdoctoral recruitment | West Lake University Machine Intelligence Laboratory recruitment postdoctoral / Assistant Researcher / scientific research assistant
- Is it safe to open a futures account online? How to apply for a low handling fee?
- Interface automation test postman+newman+jenkins
- Excel表格 / WPS表格中怎么在下拉滚动时让第一行标题固定住?
- mysql case when
- 对灰度图像的三维函数显示
- How to rectify the unqualified EMC of electronic products?
- 更新|3DCAT实时云渲染 v2.1.2版本全新发布
- Crawler framework crawler
- Starting from business needs, open the road of efficient IDC operation and maintenance
猜你喜欢
随机推荐
Take you to a preliminary understanding of multiparty secure computing (MPC)
博后招募 | 西湖大学机器智能实验室招聘博士后/助理研究员/科研助理
我想理财,不懂,有没有保本金的理财产品?
Installation steps and usage of NVM under windows10 system
OSPF---开放式最短优先路径协议
04.寻找两个正序数组的中位数
OSPF comprehensive experiment
An article about ultrasonic humidifier
Excel表格 / WPS表格中怎么在下拉滚动时让第一行标题固定住?
04. Find the median of two positive arrays
Go language context control function execution timeout return
Notes on Flickr's dataset
ROS learning notes (IV) ROS cannot solve rosdep init or update
交叉验证(cv)学习笔记
mysql case when
带你初步了解多方安全计算(MPC)
世界各地的标志性建筑物
Stm32 paj7620u2 gesture recognition module (IIC communication) program source code explanation
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?
I'm also drunk. Eureka delayed registration and this pit!








![[Hardware Engineer] can't select components?](/img/bd/fdf62b85c082f7e51bf44737f1f787.png)
