B-TREE B+TREE HASH 索引特点补充

本文深入探讨了B-TREE、B+TREE和HASH索引的特点,包括它们在数据存储、查找效率、空间占用等方面的差异,并补充了在数据库管理系统中如何选择合适的索引类型。
摘要由CSDN通过智能技术生成
平衡多路查找树---B-Tree
B-tree的B是balance的意思。是一种平衡树--是树的一种。
注:不一定非得采用链式结构,对创建后不用删除的临时数据,可将链式结构扁平化到连续的内存上。方便删除。
优点:  
            1. 结构简单,便于理解
            2. 适合单次查询
            3. 顺序存储
            4. 近根处查询速度快
缺点:  
			1.空间利用率不大,对于大量数据集,存储成本增加。
            2.搜索效率不稳定。
T度的B树,满足以下条件:
			每个节点至多有2T个节点
			除根节点外,其他每个分支节点至少有T子树
			根节点至少有两颗子树
			所有的叶子节点在同一层上
			每个节点有j-1个关键字,j个子节点,关键字按顺序排列

B+Tree
 B+树是B树的一种优化,可以拆解成索引和链表两种结构的结合,
 其中链表中保存数据(每个节点有n个数据,已排序),
 索引的叶节点是链表节点中的最大值和指向链表节点的一个指针,
 索引中只进行比较不存储数据。
 插入:B的插入法,叶子节点也有可能插入。
 比如插入14的话,两种:
 				第一直接插入,这样查询会不平衡,
			    第二,插入14后,看左右节点有没有空闲的位置(双向链表),
 有位置的话,将小数向左放,大数向右方。如果左右都满,新开辟节点存放。
优点:
		1. 方便遍历。方便取范围数。(直接遍历,不用再去非叶节点了)
        2. 空间利用率比B树稍微高一点吧。
T度的B+树,对比B树满足以下条件:
每个节点有T个关键字,T个子结点
所有的叶子节点中包含全部关键码的信息,叶子节点按关键码顺序连接
每个非终端节点,可以看成索引部分,节点中仅仅包含子树的最大或最小关键码

Hash 索引------虽然HASH索引效率较高,但B-TREE,B+TREE应用更为广泛
HASH索引特点:
结构的特殊性,其检索效率非常高,索引的检索可以一次定位,
不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,
所以 Hash 索引的查询效率要远高于 B-Tree 索引。
1,Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询,
	由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤
2,Hash 索引无法被用来避免数据的排序操作
	由于 Hash 索引中存放的是经过 Hash 计算之后的 Hash 值,而且Hash值的大小关系并不一定和 Hash 运算前的键值完全一样
3,Hash 索引不能利用部分索引键查询,
	通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用
4,Hash 索引在任何时候都不能避免表扫描,
	不同索引键存在相同 Hash 值,所以即使取满足某个 Hash 键值的数据的记录条数,也无法从 Hash 索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果
5,Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
	对于选择性比较低的索引键,如果创建 Hash 索引,那么将会存在大量记录指针信息存于同一个 Hash 值相关联。
	这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值