数据库索引是怎么建的?底层实现?为什么用B+树?

732 阅读1分钟

索引是由表中的列而建立起来的,它使用B+树的数据结构,存放列名和相应的数据值或主键值。索引又分为聚集索引和非聚集索引。其中聚集索引指的是索引和数据存在一起的索引,对应的data值就是要查找的数据,而非聚集索引指的是只存了索引而data存的是主键值或地址指针的索引。

MySQL Innodb索引底层实现:采用B+树的数据结构,它的非叶子节点只存放索引和指针,叶子节点再存放索引和数据值,而且非叶子节点会再冗余一份到叶子节点中,每个叶子节点之间用指针相连。 这样做一个节点可以存储多个元素,相当于降低了整棵树的高度,是磁盘I/O的效率增加了,而叶子节点使用指针相连是为了提高范围查找的效率。

为什么用B+树:Mysql选用B+树这种数据结构作为索引,可以提高查询索引时的磁盘IO效率,并且可以提高范围查询的效率,并且B+树里的元素也是有序的。 参考:面试必备之MYSQL索引底层原理分析