当前位置:网站首页>简述聚簇索引、二级索引、索引下推
简述聚簇索引、二级索引、索引下推
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 索引过滤: 通过索引扫描并且基于索引进行二次条件过滤后再回表。
边栏推荐
- 基于SqlSugar的开发框架循序渐进介绍(13)-- 基于ElementPlus的上传组件进行封装,便于项目使用
- 11、照相机与透镜
- 函数名指针和函数指针
- Take you to a preliminary understanding of multiparty secure computing (MPC)
- Random talk on generation diffusion model: DDPM = Bayesian + denoising
- Several implementations of PHP to solve concurrency problems
- An article about ultrasonic humidifier
- Interface automation test postman+newman+jenkins
- OSPF---开放式最短优先路径协议
- 03. Longest substring without repeated characters
猜你喜欢

Take you to a preliminary understanding of multiparty secure computing (MPC)

四六级

【硬件工程师】元器件选型都不会?

How to install govendor and open a project

Idea essential plug-ins

哈夫曼树的构建

Random talk on generation diffusion model: DDPM = Bayesian + denoising

我也是醉了,Eureka 延迟注册还有这个坑!

OSPF---开放式最短优先路径协议
Principle and implementation of UDP penetration NAT in P2P
随机推荐
POWERBOARD coco! Dino: let target detection embrace transformer
How to prevent the unburned gas when the city gas safety is alarmed again?
枚举类和魔术值
PostgreSQL里有只编译语句但不执行的方法吗?
Lvgl 7.11 tileview interface cycle switching
mongodb 集群及分片
Automated test Po design model
Several implementations of PHP to solve concurrency problems
栈的顺序存储结构,链式存储结构及实现
Does PgSQL have a useful graphical management tool?
"Digital security" alert NFT's seven Scams
Update 3dcat real time cloud rendering V2.1.2 release
Random talk on generation diffusion model: DDPM = Bayesian + denoising
世界各地的标志性建筑物
【VSCODE】支持argparser/接受命令行参数
How to rectify the unqualified EMC of electronic products?
I'm also drunk. Eureka delayed registration and this pit!
04.寻找两个正序数组的中位数
更新|3DCAT实时云渲染 v2.1.2版本全新发布
什么是 IP SSL 证书,如何申请?