如果使用hash作为索引,由于hash是散列无序的,所以如果使用hash若是对范围进行检索的话就需要遍历寻找,这就违背了索引的快速检索的概念。
如果采用二叉树作为索引的话,索引数量足够多,那么二叉树的深度将会足够深,如果要查找的数据在树的最深一层的话那无疑会增加非常大的IO消耗。
因此引入了B树的,相对于二叉树的纵向延伸,B树的横向延伸无疑会减少非常多的IO消耗。而B树对于索引存储时需要存储索引的key,指针以及数据,假如以innodb为例,每块大小为16KB,如果每条数据占用1KB,假设key和指针不占用空间,那么每块只能存储16条数据,这样的话一颗B树所能存储的数据就会非常少。
所以此时我们需要使用B+树,B+树就是在最底层的叶子节点中存储数据,上层节点中只存储key和指针。这样就可以存储大量的索引数据。
写不出来咋能说出来?以上仅为个人拙见,写出来加深记忆,错误之处欢迎大神指正!!