MySQL 索引笔记

MySQL 索引笔记

一、MySQL架构

在这里插入图片描述

二、存储引擎

MySQL存储引擎

在这里插入图片描述

B树

通常说的B-树就是B树,其实没有B-树
在这里插入图片描述

B+树

在这里插入图片描述

在这里插入图片描述

B树和B+树主要区别

B 树存储数据的时候,只有在叶子结点才存储数据;
B+ 树是在叶子结点和非叶子结点都存储数据。

二、索引实现原理

给一个字段建索引,B+树种存储的是这个值索引值,
先通过这个索引值从B+树中找到id,然后再次从B+树中找到该条数据。

索引的分类

在这里插入图片描述

三、索引优化——基础知识

(一)回表

首先在建立索引的某个字段的普通B+ 树中,根据索引 key 找到 id,
然后再根据 id 去主键 B+树 中找到对应的数据,这个过程就叫 回表。

(二)覆盖索引

例子:

select * from table1 where name = "zhangsan";
select id from table1 where name = "zhangsan";
  1. 第一条查询语句:会根据name,查找到对应的id,然后根据id去查找对应的数据,也就是会出现回表;
  2. 第二条查询语句:第一次就根据name查找到了id,就不会在拿 id 去B+树中查找,就直接返回id了,这就是索引覆盖;

(三)最左匹配原则

思考:给(name,age)创建了组合索引,下列哪些查询语句会用到组合索引?

select * from table1 where name = "zhangsan";
select id from table1 where name = "zhangsan" and age = 10;
select * from table1 where age = 10;
select id from table1 where age = 10 and name = "zhangsan";

这里就会涉及到MySQL执行的优化器,所以1,2,4条查询语句都会用到组合索引;

(四)索引下推

思考:什么事谓词下推?
select t1.name,t2.name from t1 join t2 on t1.id = t2.id;

两种方式:

  1. 方式一: 把所有的字段先做表关联,然后再从关联好的表中选择需要的4个字段;
  2. 方式二: 先把两张表需要的4个字段取出,然后在做表关联;

当然第二种方式更好,把过滤处理的操作放到下层去处理,这就是谓词下推。

思考:那什么是索引下推呢?

给(name,age)创建了组合索引:
方式一:

  1. 先根据name列从存储引擎中把符合规则的数据拉取到mysql的server层;
  2. 然后在server层按age进行数据过滤;

方式二:直接从存储引擎拉取数据的时候,直接按照name和age做判断,将符合的结果返回给mysqlserver;这就是 索引下推

(五)索引匹配方式

  1. 全值匹配
  2. 匹配最左前缀
  3. 匹配列前缀
  4. 匹配范围值
  5. 精确匹配某一列并范围匹配另外一列
  6. 只访问索引的查询

四、索引优化——覆盖索引

五、索引优化——索引监控

关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值