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,对关键字没有要求,在多列上设计索引,需要考虑索引顺序