索引的种类:
1,B*树索引
2,位图索引
3,位图联结索引
4,基于函数的索引
5,应用域索引
B*树索引
最底层的是叶子节点(leaf node),包含索引键以及一个rowid。
中间是分支块(branch block),用于导航。
最顶是根块。
索引的叶子节点间构成了双向链表,可供索引区间扫描。例子:where x between 20 and 30;就可以在找到20后,水平地扫描叶子节点链表,而不
用再再索引结构中导航。
B*树是平衡树,有高度(height),从根块到叶子快的遍历,都会访问同样数目的块。大多数高度是2或3,所以基本都是2或3次I/O就能找到rowid。
select index_name,blevel,num_rows
from user_indexes
where table_name = 'BIG_TABLE'
blevel是分支层数,加1就是b树高度了。
什么情况下应该使用B*树索引
1.仅当要通过索引访问表中很少的一部分行(只占一个很小的百分比)。
对于瘦表(少列,列小),百分比为2%-3%;
对于肥表,百分比为20-25%;
原因:瘦表,即每行占得字节少,一个数据块就能包含更多的行;因为每读取一行都须完整I/O一个数据块,读取同样的行数时,瘦表所须
I/O的数据块就少,全表扫描可能效果更好。结论:越瘦的表,百分比越小,越倾向可以使用全表扫描。
2.回答一个查询:索引包含了足够的信息来回答整个查询,而根本不必访问表,这种情况下,索引可以作为一个较瘦版本的表。
数据在磁盘上的物理组织形式,也会对索引的使用性能有影响。
从一个1000行的索引返回数据所用的时间与从一个100000行的索引结构中返回数据的时间是一样的,因为高度一样,I/O次数就一样。
分享到:
相关推荐
B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中; B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1...
B+树索引 B+树索引 B+树索引 B+树索引 B+树索引 B+树索引
Oracle B*树索引内部机制及其应用的研究.pdf
Oracle数据库应用系统的性能优化是一项系统化的工程,涉及到数据库结构的各个方面。本文从B* 树索引入手, 分析了B* 树索引的结构及原理,阐明了如何正确合理地使用B* 树索引及其如何优化数据库系统的性能。
关于索引的介绍,以及b+树结构图,两种索引性能比较,索引优化建议
采用平衡二叉树索引关键字,可以体会数据结构用法,也可用于项目,完全开源
聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引...
为什么说B+树比B树更适合做文件索引
证监会行业分类与上市公司索引归纳.pdf
有关B*tree的简单实验,使用的环境和不适用的和环境。
针对MapReduce数据块处理机制、高维数据分布特征和KNN查询需求,设计一种基于B 树的高维索引结构(iPartition),创新性提出基于主成分区分度的优化数据划分策略和邻接数据域分散存储等原则,将数据均匀划分到不同的...
B+树做数据库的索引,增加查询效率,代码下载之后可以运行
这学期数据结构的课程设计,用B—树模拟索引文件。
B+树索引的原理,详细的介绍了B+树在数据库方面的实现原理,全英文内容
数据库索引的设计与实现有几种方法,主要阐述了使用B+树实现索引的方法。通过对B+树定义及 算法的描述,可以看到使用B+树能够方便、有效的建立数据库的索引,并且能够有效减少查找时磁盘的 I/O次数,提高数据查找的效率...
有很多B和B+树的异同的比较,很多都是本人总结得到的,很辛苦
为了克服R*树在时间与效率上的不足 给出了一种新型的存储结构,并给出了这种存储结构的插入、溢出、分裂等空间索引常用操作的算法
b+树索引所原理,包括组合索引下的最左匹配原理等。。
算法框架出自一本书,书名记不得了。对其进行了实现和调试,用100+规模的数据测试通过。内附文档。
深入研究B树索引 B树算法 B+树算法 经典算法 强烈推荐~