索引是一种排好序的数据结构,比如排好序的二叉树,
因为之前其他的几种树,如果数据量过大的话,都会导致树的高度变高,树高度,就相当于是 IO
交互的次数,因为真正的数据是存储在磁盘上的。
可以看出来,树的高度越高,需要交互的 IO 就越多,那么在数据不变的情况下,要想降低树的高度,唯一的做法就是扩大一个节点的宽度了。
在B+树中,mysql规定一个节点是 16kB
,大概可以存储 1100
多个索引,而最后一层,因为要存储索引还要真正对应数据的地址,所以占的内存比较多,只能存储 16
个字节,所以,总数为大概 2千万的数据
。只需要三次 IO,甚至 B+ 树中,比较顶层的节点直接存储在内存中,使查询更快,如下图