Mysql索引 和 索引的数据结构B+Tree (B+树)

1.什么是索引?

          索引是数据表中一个或者多个列进行排序的数据结构

     为什么需要索引?

索引能够大幅提升检索速度,如果没有索引很多时候就需要一个一个去找实际上就是全表扫描,这样效率肯定是非常低的,所以才需要索引结构。

(常见查找结构,如:线性查找:一个一个去找。对于有序数据可以使用二分查找。树型查找结构,如二叉搜索树、平衡树、多路平衡查找树。)

创建、更新索引本身也会耗费空间和时间。

 

2. B+Tree(B+树)

    B+树 是 B-Tree的变形

Mysql 实际使用的 B+Tree作为索引的数据结构。

只在叶子结点带有指向记录的指针。B+树只在叶子结点存储数据,其它非叶子结点可以存储更过孩子(对B-Tree的优化)。

叶子结点通过指针相连。叶子结点里面有从左到右指针,它是一个双向指针,通过这个指针就可以非常方便实现范围查询。

Mysql索引 和 索引的数据结构B+Tree (B+树)_第1张图片

是不是树的度越多越好呢?

如果树的阶越高,树高就会越小,因为每个孩子结点越多整体的树高就越小。不是每个结点的阶越大就越好,硬盘是以块来存储的,内存的基本管理单位是页,实际上阶是根据磁盘块大小来去确定的,主要是根据操作系统管理硬件有关。为了让操作系统更好的来去读取和缓存数据,以磁盘块的大小来确定B+树,一个磁盘块可以存储多少的孩子也就是多少阶。

 

 

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