B-tree算法查询效率分析
来源:互联网 发布:mac隐藏相册 编辑:程序博客网 时间:2024/04/29 15:07
B-tree的介绍请看这里:http://blog.csdn.net/flq_chank/article/details/41928291
最小度数为d,最大度数为2d-1,高度为h(h=1,2,…)的B-tree,在最坏情况下,其第一层有1个结点,第二层有2个结点,第三层有2d个结点,第四层有2d2个结点……,第h层有2dh-2个结点,如图所示:
此时B-tree结点内数据实体的总数为(h≥2):
Nmin=1+(2+2d+2d2+…+2dh-2)×(d-1) = 2dh-2-1
因此,在最坏情况下,h=㏒d((Nmin+1)/2)+2。
在最好的情况下,其第一层有1个结点,第二层有2d-1个结点,第三层有(2d-1)2个结点……,第h层有(2d-1)h-1个结点,如图所示:
此时B-tree结点内数据实体的总数为(h≥1):
Nmax=(1+(2d-1)1+(2d-1)2+…++(2d-1)h-1) ×(2d-2)=(2d-1)h-1
因此,在最好情况下,h=㏒2d-1(Nmax+1)。
即树的高度h有:㏒2d-1(N+1) ≤ h ≤ ㏒d((N+1)/2)+2。可以看出,在最好和最坏情况下,树的高度都是以O(h)=O(㏒dN)来增长的。使用B-tree进行查询的时间复杂度是O(㏒dN),在数据量很大时,可以将d的值设大一点,这样树的高度就会很小,大大减少了I/O操作,提高了查询速度。
单论单个数据实体的查询效率来说,Hash索引的查询效率远比B-tree索引高。因为Hash索引大部分情况下只要一次I/O就行了,而B-tree索引需要O(h)次I/O。但任何事物都是有两面性的,由于Hash索引结构的特殊性,其存在着很多限制和弊端。主要表现在:(1)Hash索引不能进行范围查询,只能满足“=”、“IN”和“!=”等查询(2)Hash索引不能用来简化排序操作(3)当Hash索引遇到大量Hash值相等的情况下效率可能会比B-tree索引低。
- B-tree算法查询效率分析
- B-tree数算法分析
- B-tree 索引提高 MySQL 查询效率的原理
- B-Tree作为索引能够提高查询效率的原理
- 查询效率分析
- B-tree 算法详解
- B+ -tree 算法
- B*-tree 算法
- B+ tree 删除算法
- 算法效率分析
- 算法效率分析
- 算法效率分析
- 算法效率分析框架
- Sql 分页查询效率分析
- 【数据结构与算法】B+ tree
- KMP算法的效率分析
- 算法效率分析-时间复杂度
- MYSQl left join 联合查询效率分析
- 自定义View实现圆形进度条
- 3. PCRE 兼容正则表达式
- 李红霞作业52页21题
- Model/View 教程
- P53 第40题
- B-tree算法查询效率分析
- 示波器的使用总结
- pthread_key_t和pthread_key_create()详解
- [ACM]线性表操作
- 根据采购订单创建外向交货单的BAPI
- 比较有内涵的句子
- Activity的launchMode:singleTop,singleTask与singleInstance
- zoj 3864 Quiz for EXO-L(连通块 bfs)
- RFID 通信系统中为什么要进行编码与解码?常见的编码方法有哪些?