Spring Cloud微服务实战 打造企业级优惠券系统 2-8 Mysql索引

0    课程地址

https://coding.imooc.com/lesson/380.html#mid=28224 

1    浓缩精华
1.1  本章简介:

mysql存储和查找使用聚簇索引和其他索引,聚簇索引应用b+tree原理(其他索引用b 树)。

1.2  B+tree 的特点:

a.非叶子节点只存储索引

b.叶子节点存储数据,且叶子结点按照关键字顺序相互连接

1.3  聚簇索引规则:

显示的定义了主键                InnoDB会利用主键来生成其聚簇索引

没有定义主键                  InnoDB会选择一个非空的唯一索引来创建聚簇索引

没有定义主键且所有列都不满足主键的条件     InnoDB会隐式的创建一个自增的列来作为聚簇索引

2    个人关注
2.1  关注索引

 3.3

3    课程内容
3.1  B树和B+树

3.1.1  B树是一种多路平衡查找树,B是平衡的意思,即Balance,m阶(m>=2)的B树有以下特性:
①树中的每个节点最多有m个子节点
②除了根节点和叶子节点之外,其他每个节点至少有m/2个子节点
③所有的叶子节点都在同一层
④节点中关键字的顺序按照升序排列

3.1.2  B+树是B树的一种变体,同样是多路平衡查找树,它与B树主要的不同是:
①非叶子节点不存储数据,只存储索引
②叶子节点包含了全部的关键字信息,且叶子节点按照关键字顺序相互连接

3.2  Mysql索引之聚簇索引(应用B+树原理)

◆聚簇索引的含义
每个InnoDB的表都拥有一个索引,称之为聚簇索引,此索引中存储着行记录,一般来说,聚簇索引是根据主键生成的。


◆聚簇索引的创建规则
显示的定义了主键                InnoDB会利用主键来生成其聚簇索引

没有定义主键                  InnoDB会选择一个非空的唯一索引来创建聚簇索引

没有定义主键且所有列都不满足主键的条件     InnoDB会隐式的创建一个自增的列来作为聚簇索引


*对于选择唯一索引的顺序是按照定义唯一索引的顺序,而非表中列的顺序;

类选中的唯一索引字段会充当为主键,或者InnoDB隐式创建的自增列也可以看做主键

3.3  主键查值过程

左侧为辅助索引(btree),左侧底部为索引,,右侧为聚簇索引(b+树)

自己理解:左侧为a/b表联查,最终根据a表的聚簇索引和b表的聚簇索引拿到a/b表的行记录

 

3.4  常见索引类型


主键索引(聚簇索引)    PRIMARYKEY,要求关键字不能重复,也不能是NULL,同时会增加主健约束
唯一索引          UNIQUE INDEX,要求关键字不能重复,同时增加唯一性约束

单列索引          INDEX,对关键字没有要求,在单列上设计索引

多列素引          INDEX,对关键字没有要求,在多列上设计索引,需要考虑索引顺序

诸葛
原文地址:https://www.cnblogs.com/1446358788-qq/p/14296089.html