什么是btree?什么是hash?这两者有什么区别

您所在的位置:网站首页 哈希表和字典有什么区别呢 什么是btree?什么是hash?这两者有什么区别

什么是btree?什么是hash?这两者有什么区别

2024-07-16 20:21| 来源: 网络整理| 查看: 265

我们以MySQL为例,来说明btree索引算法和hash索引算法。首先,我们先了解一下索引,以及btree和hash是什么。

索引原理

索引用来快速寻找特定的数据值,如果没有索引,查询时需要遍历整张表。原理大概是这样:

把创建了索引的列内容排序 排序结果生成倒排表 在倒排表内容上拼上数据地址 在查询时,先找到倒排表内容,再取出地址,最后找到数据 一、btree索引算法 InnoDB存储引擎默认的索引就是btree。 节点保存索引,而不是数据。所有的数据都保存在叶子节点,叶子节点不单保存数据,还包含指向数据指针,而且按照数据自小到大顺序链接。(这里说的是b+tree) 数据的插入、删除只在叶子节点进行。(这里说的是b+tree)

btree有两种,一种是btree,还有一种是b+tree。数据库中说的b+tree一般说的是b+tree。这两种有什么区别呢?

btree所有节点都是放索引和数据,而b+tree只在叶子节点放数据和索引,非叶子节点只存放索引。 btree叶子节点相互独立,b+tree叶子节点有一条链相连。 btree可以实现把热点数据放在离根节点进的节点,重复多次查询热数据更高效。 b+tree,一次读取,在内存页获取更多的索引,更快缩小范围。 全局数据遍历,b+tree只要找到最小节点,然后通过链进行顺序遍历。而btree需要每层遍历。 二、hash索引算法

数据通过hash算法转换成定长的哈希值,将哈希值与数据的行指针存入hash表中对应的位置,如果哈希值相同,在对应的hash中以链表形式存储。这里的原理可以参考hashmap的put方法内部实现原理。

btree与hash区别: btree可以用作范围查询,比如>,>=,


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3