你是否了解OracleB树索引

在向大家详细介绍Oracle B树索引之前,首先让大家了解下非唯一索引中,然后全面介绍Oracle B树索引。Oracle B树索引中不存在非唯一的条目。

10年积累的成都网站建设、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有临城免费网站建设让你可以放心的选择与我们合作。

在非唯一索引中,Oracle会把rowid作为一个额外的列追加到键上,使得键唯一。

Exp:create index I on T( x , y ) ,从概念上讲就是Create unique index I on T(x , y , rowid)。Oracle会首先按索引键值排序,然后再按照rowid升序排序。

在唯一索引中,数据只按索引键值排序。

1.大多数情况下,Oracle B树索引的高度都是2或者3,所以一般情况下,在索引中找到一个键只需要2或3次I/O。

2.Oracle B树索引所有叶子块都应该在同一层上,并且叶子节点实际上都是双向链表,这样在进行索引区间扫描(index range scan)的时候,只需通过叶子节点的向前或者向后就可以了,无需再对索引结构进行导航。

3.适当对Oracle B树索引存在重复值的列进行压缩, 可以增加缓存命中率,使I/O数减少,因为
相关的条目可能都存在在一个块中。(Exp:create index I on T(userid , username) username=’steven’这个值可能就会对应于多个rowid放在同一个索引块中);但是带来的负面作用是使索引结构复杂化,维护索引更耗时,查询索引占用CPU更多的时间。(压缩适合用于多列索引中)

4.Oracle B树索引的反向键索引主要用于缓解索引右侧缓冲区忙等待。适合用于类似于sequence产生的PK主键上,因为这些列不太会需要使用区间扫描,也就是不会用到max(PK),min(PK),between and或者where PK < 200等查询

5.如果在查询中会有order by colum1 asc,column2 desc, 试着在创建索引时create index I on T(colum1 asc,column2 desc) , 因为Oracle INDEX默认是DESC排序,在索引中排序总比在磁盘中排序好得多。

6.适合Oracle B树索引使用的2种情况:
1)访问表中占很小比例的行
2)根本不访问表,所需查询的数据全部在索引中
3)一种特殊的用法,使用索引访问表的全部行,这样的做法是为了使查询最初的响应时间很短,不是针对总吞吐量进行的优化。

7.索引是按索引键顺序存储,索引会按键的有序顺序进行访问。索引指向的块则随机存储在堆中。

8.建议:在thin表中使用Oracle B树索引查询<2-3%的列,fat表中<20-25%的列。

当前文章:你是否了解OracleB树索引
本文链接:http://www.shufengxianlan.com/qtweb/news25/210525.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联