Mysql索引
B+树
B+树,叶节点存放数据,其余节点用来索引。
B+树更适合用来存储外部数据,即磁盘数据。尤其是关系型数据库,索引巨大,为了减少内存的占用,索引也会被存储在磁盘上。
B+树的细节与问题
B+树的查询时间:O(logn)与树的高度有关
hash查找时间:O(1)
hash比B+树查找时间更短,不用B+树的原因:查找1个值hash更快,但查找多条B+树效率更高,B+树索引有序,又有链表相连。数据库的索引一般再磁盘上,数据量大的情况可能无法一次装入内存,B+树的设计可以被允许数据分批加载,同时树的高度较低,提高查找效率。
数据库索引采用B+树的原因
B-树(B树)不要说B减树。特点是每层节点数目非常多,层数少,目的是为了减少磁盘IO次数,当查询数据时,最好的情况是很快找到目标索引,然后读取数据。
B树再提高了磁盘IO性能的同时并没有解决元素遍历的效率低下的问题,为了解决这个问题,B+树产生。B+树只要遍历叶子节点就可以实现整棵树的遍历。而且再数据库中基于范围的查询是非常频繁的,而B树这种操作效率太低。