零、Mysql数据表的类型
一、索引
1.索引的概念
索引是帮助MySQL高效获取数据的 排好序 的数据结构。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。
索引的作用:更加快速的检索到需要的数据
注意:
1)Mysql默认引擎使用innodb,索引和数据都保存在本地同一文件。
2)索引的效率问题:为了提高数据检索效率,但是修改索引字段,插入删除数据效率低。
2.索引的原理——B+树
1)B+树的概念
一个 m 阶 B+ 树的性质:
- 有 K 个子树的根节点和中间节点包含 K 个元素(B 树种是 K-1 个元素),每个元素不保存数据,只用来索引,所有的数据都保存在叶子节点上
- 所有的叶子节点包含了所有的元素的信息,且所有的叶子节点根据元素的大小从小到大组成一个链表
- 根节点以及所有的中间节点同时在于子节点,在子节点中是最大(或最小)元素
2)为什么选B+树
①InnoDB使用的B+Tree作为索引原因如下:
- 如何减少获取数据的时间 —-> 减少 IO 操作 ——> 如何减少 IO 操作 —> 减少树的高度 —> 什么树能稳定的可控树的高度 —>(B 树和 B+ 树)—> 那为什么选择 B+ 树 —–> 因为 B+ 树节点不保存全部数据,因此在一页(一个节点)上能够存更加多的索引数据,让树的高度更低。
②对于组合索引:
- B+tree 索引是按照索引列名 (从左到右的顺序) 进行顺序排序的,因此可以将随机 IO 转换为顺序 IO 提升 IO 效率;并且可以支持 order by/group 等排序需求;适合范围查询。
3.索引的使用
1)主键索引——primary key
- 唯一的标识,主键不可重复,只能有一个列作为主键。建表时只能有一个。