Mysql索引

Mysql有不同的存储引擎,其中,innoDB存储引擎使用B+树存储
B+树是一颗多叉树。特点:
【1】利用磁盘局部预读:每次读入磁盘一页数据,其中一页包含数据及其周围的数据。
B+树利用这一特点实现每一块对应磁盘的一页。即访问B+树一层对应一次IO。
【2】非叶子节点不存储数据,只存储指向叶子节点的指针
【3】叶子节点存储数据

2、B+树非叶子节点不存储数据原因?
1、B+树索引是一个多叉树的查找 其时间复杂度为O(log(m)N) N代表:数据总数量
m:一磁盘块可存储的数据项多少。当N固定时,m越大,树高度越小。
所以为了保证树足够低。非叶子节点不存储数据。
2、只有叶子节点存储数据,查找时间复杂度一致,查找更稳定。

3、MYSQL innoDB聚簇索引和二级索引及 MYSIAM非聚簇索引
聚簇索引:叶子节点value直接存储数据。索引顺序和数据存储物理顺序具有一致性。
二级索引:叶子节点value存储聚簇索引对应的主键值。
MYSQL MYSIAM :只有非聚簇餐索引,叶子节点存储执行数据块的指针。

聚簇索引一般用主键做索引:
【1】因为主键一般足够短(二级索引value值需存储索引。)
【2】有利于范围查找。
【3】自增不会引起数据的重排列,只会在末尾加入。

缺点:插入速度慢,需要挨个遍历是否存在。

你可能感兴趣的:(mysql数据库总结)