:
1,首先将最上面的这个如15.56.77加载到内存,这是一次磁盘的IO操作,然后在内存查找
2,然后发现30是位于15.56之间,然后去他们两个之间的那个空白节点把下面第二行的地址拿到,然后将这个对应的第二行加载到内存...,又是一次磁盘IO操作
3,然后发现这个30位于20和49之间,然后读这个第二行的20和49之间的地址,将对应的第三行读取到内存,第三次磁盘IO....,把这个hash索引值之后的结果和磁盘地址两个做一个唯一的映射,这样看起来好像感觉执行比如下面这个SQL好像比B+更快,因为只需要对这个索引做一次hash,然后拿这个这个hash值去磁盘映射的位置找到这个对应的值即可...另外MySQL底层对hash碰撞(如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞)规避得很好
比如select * from a where Col1=1
但是,假如执行的是select...,实现范围查找就非常快了,他的叶子节点之间用指针连接起来的,而且是双向的,首尾相连的
而B树叶子结点没有指针的,
假如查找的是10-50之间数据,找到20之后,又要从根节点索引元素查找到49,不能像B+