Mysql 使用的索引结构是 B+ 树:
数据结构: 链表,数组,树,哈希
实现需求: 范围查询, 精准查询, 排序
-
链表: 数组查询效率低,需要遍历
-
哈希: 范围查询很难实现,而且数据量大容易造成哈希冲突
-
树: 以上三种需求都有符合,
3.1 搜索二叉树:
层数过大3.2 红黑树
一样的层数过大3.3 B-树, B+ 树
B+树是优化版的B-树,和二叉树, 红黑树的区别是减少了层数,即在每一层都有装了一个链表,B+树可以在子节点查询到父节点 数据库选择B+树的原因有以下几点: 1. 磁盘I/O效率高:B+树相对于其他树型数据结构,具有更高的磁盘I/O效率。因为B+树的非叶子节点只存储索引信息,而不存储数据信息,这使得在磁盘读取数据时,可以一次读取更多的索引信息,减少磁盘I/O操作次数,提高查询效率。 2. 支持高效范围查询:B+树非常适合范围查询,因为B+树中相邻的数据块之间有指针相连,可以很快地定位到需要查询的数据块,提高范围查询的效率。 3. 支持高效的顺序访问:B+树中的叶子节点按顺序存储,可以支持高效的顺序访问,例如按照索引顺序遍历所有数据,或者使用范围查询。 4. 支持高效的插入和删除操作:B+树通过分裂和合并节点的方式,可以高效地处理插入和删除操作,使得数据库的写入性能更高。 综上所述,B+树在数据库中得到了广泛的应用,其高效的磁盘I/O、范围查询、顺序访问、插入和删除等特性,使得B+树成为了一种非常优秀的数据结构。