MySQL笔记|MySQL 索引笔记

MySQL 索引笔记 一、MySQL架构 MySQL笔记|MySQL 索引笔记
文章图片

二、存储引擎 MySQL存储引擎
MySQL笔记|MySQL 索引笔记
文章图片

B树
通常说的B-树就是B树,其实没有B-树
MySQL笔记|MySQL 索引笔记
文章图片

B+树
MySQL笔记|MySQL 索引笔记
文章图片

MySQL笔记|MySQL 索引笔记
文章图片

B树和B+树主要区别

B 树存储数据的时候,只有在叶子结点才存储数据;
B+ 树是在叶子结点和非叶子结点都存储数据。
二、索引实现原理 给一个字段建索引,B+树种存储的是这个值索引值,
先通过这个索引值从B+树中找到id,然后再次从B+树中找到该条数据。
索引的分类
MySQL笔记|MySQL 索引笔记
文章图片

三、索引优化——基础知识 (一)回表
首先在建立索引的某个字段的普通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. 只访问索引的查询
四、索引优化——覆盖索引 五、索引优化——索引监控 【MySQL笔记|MySQL 索引笔记】关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。

    推荐阅读