我们都知道InnoDB存储引擎的存储数据结构是B+树,那小伙伴们有没有想过,InnoDB存储引擎为什么要用B+树作为它的存储结构,而是用Hash,二叉树,AVL树,红黑树,B-树呢?
今天小编就来为大家梳理一下里面的逻辑。
Hash
Hash是什么?
Hash表又称散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。–《百度百科》
Hash特点是什么?
- 根据指定下标读取数据。
- 所有数据文件需要添加到内存,比较耗费内存空间。
- 精确查找速度快。
Hash存在什么问题?
如果所有的查询是等值查询,那么hash很快,如果是范围查询且较多的数据,hash不合适,因为hash要精确配置到每一个值,如果范围查询则需要逐个匹配。
思考:适合范围查询的数据结构有什么?