oracle索引分析与比较77073

oracle索引分析与比较77073

ID:14328259

大小:63.50 KB

页数:25页

时间:2018-07-27

oracle索引分析与比较77073_第1页
oracle索引分析与比较77073_第2页
oracle索引分析与比较77073_第3页
oracle索引分析与比较77073_第4页
oracle索引分析与比较77073_第5页
资源描述:

《oracle索引分析与比较77073》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Oracle索引分析与比较77073Oracle索引分析与比较[收藏此页][打印]作者:itpubpentium2006-08-18网友评论2条内容导航:各种索引的简要解释第1页:各种索引的简要解释第2页:各种索引的创建方法第3页:索引的两个知识点第4页:索引不起作用的几种情况第5页:CBO模式下优化器采取全表扫描。【IT168技术文档】索引在各种关系型数据库系统中都是举足轻重的组成部分,其对于提高检索数据的速度起至关重要的作用。在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等。本文主要就前6种索引进行

2、分析,由于interMedia全文索引涉及的内容可以单独写一篇文章,所以不在此对其做分析。首先给出各种索引的简要解释:b*treeindex:几乎所有的关系型数据库中都有b*tree类型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rid快速定位所访问的行。反向索引:反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服务器环境下,用于减少索引叶的竞争。降序索引:8i中新出现的索引类型,针对逆向排序的查询。位图索引:使用位图来管理与数据行的对应关系,多用于OLAP系统。函数索引:这种索引中保存了数据列基于function返回的值,在select*fromtab

3、lewherefunction(column)=value这种类型的语句中起作用。2各种索引的结构分析2.1B*Tree索引B*Tree索引是最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B-Tree索引是基于二叉树的,由分支块(branchblock)和叶块(leafblock)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的

4、rowid。在叶节点的上面是分支块,用来导航结构,包含了索引列(关键字)范围和另一索引块的地址。假设我们要找索引中值为80的行,从索引树的最上层入口开始,定位到大于等于50,然后往左找,找到第2个分支块,定位为75-100,最后再定位到叶块上,找到80所对应的rowid,然后根据rowid去读取数据块获取数据。如果查询条件是范围选择的,比如wherecolumn>20andcolumn<80,那么会先定位到第一个包含20的叶块,然后横向查找其他的叶块,直到找到包含80的块为止,不用每次都从入口进去再重新定位。2.2反向索引反向索引是B*Tree索引的一个分支,它的设计是为了运用在某

5、些特定的环境下的。Oracle推出它的主要目的就是为了降低在并行服务器(OracleParallelServer)环境下索引叶块的争用。当B*Tree索引中有一列是由递增的序列号产生的话,那么这些索引信息基本上分布在同一个叶块,当用户修改或访问相似的列时,索引块很容易产生争用。反向索引中的索引码将会被分布到各个索引块中,减少了争用。反向索引反转了索引码中每列的字节,通过dump()函数我们可以清楚得看见它做了什么。举个例子:1,2,3三个连续的数,用dump()函数看它们在Oracle内部的表示方法。SQL>select'number',dump(1,16)fromdual2uni

6、onallselect'number',dump(2,16)fromdual3unionallselect'number',dump(3,16)fromdual;'NUMBEDUMP(1,16)-----------------------numberTyp=2Len=2:c1,2(1)numberTyp=2Len=2:c1,3(2)numberTyp=2Len=2:c1,4(3)再对比一下反向以后的情况:SQL>select'number',dump(reverse(1),16)fromdual2unionallselect'number',dump(reverse(2),16)

7、fromdual3unionallselect'number',dump(reverse(3),16)fromdual;'NUMBEDUMP(REVERSE(1),1-----------------------numberTyp=2Len=2:2,c1(1)numberTyp=2Len=2:3,c1(2)numberTyp=2Len=2:4,c1(3)我们发现索引码的结构整个颠倒过来了,这样1,2,3个索引码基本上不会出现在同一个叶块里,所以减少了争用。不过反向索引

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。