Oracle会自动为表的主键列建立索引,这个默认的索引是普通的B-Tree索引。对于主键值是按顺序(递增或递减),如序列生产,加入的情况,默认的B-Tree索引并不理想。这是因为如果索引列的值具有严格顺序时,随着数据行的插入,索引树的层级增长很快,形成明显的歪树或者热点,同时搜索索引发生的I/O读写次数和索引树的层级数成正比,也就是说,一棵具有5个层级的B -Tree索引,在最终读取到索引数据时最多可能发生多达5次I/O操作。因而,减少索引的层级数是索引性能调整的一个重要方法。
索引列数据从序列中获取,其有序性无法规避,但在建立索引时,Oracle允许对索引列的值进行反向,即预先对列值进行比特位的反向,如 1234,1235,1236,1237,1238 经过反向后的值将是4321,5321,6321,7321。显然经过位反向处理的有序数据变得比较随机了,这样所得到的索引树就比较对称,从而提高表的查询性能。
创建反向索引例子:
ORDER_ID为T_ORDER表的主键,主键名为PK_ORDER,我们为ORDER_ID列上建立一个反向键索引IDX_ORDER_ID,并使PK_ORDER_ID使用这个索引,其SQL语句如下:
create table T_ORDER (
ORDER_ID NUMBER(10) not null,
CLIENT VARCHAR2(60),
ADDRESS VARCHAR2(100),
ORDER_DATE CHAR(8));
create unique index IDX_ORDER_ID on T_ORDER ( ORDER_ID ASC) reverse;
alter table T_ORDER add constraint PK_ORDER primary key (ORDER_ID) using index IDX_ORDER_ID;
然而反向键索引也有它局限性:如果在WHERE语句中,需要对索引列的值进行范围性的搜索,如BETWEEN、<、>等,其反向键索引无法使用,此时,Oracle将执行全表扫描;只有对反向键索引列进行 <>和 = 的比较操作时,其反向键索引才会得到使用。
索引列数据从序列中获取,其有序性无法规避,但在建立索引时,Oracle允许对索引列的值进行反向,即预先对列值进行比特位的反向,如 1234,1235,1236,1237,1238 经过反向后的值将是4321,5321,6321,7321。显然经过位反向处理的有序数据变得比较随机了,这样所得到的索引树就比较对称,从而提高表的查询性能。
创建反向索引例子:
ORDER_ID为T_ORDER表的主键,主键名为PK_ORDER,我们为ORDER_ID列上建立一个反向键索引IDX_ORDER_ID,并使PK_ORDER_ID使用这个索引,其SQL语句如下:
create table T_ORDER (
ORDER_ID NUMBER(10) not null,
CLIENT VARCHAR2(60),
ADDRESS VARCHAR2(100),
ORDER_DATE CHAR(8));
create unique index IDX_ORDER_ID on T_ORDER ( ORDER_ID ASC) reverse;
alter table T_ORDER add constraint PK_ORDER primary key (ORDER_ID) using index IDX_ORDER_ID;
然而反向键索引也有它局限性:如果在WHERE语句中,需要对索引列的值进行范围性的搜索,如BETWEEN、<、>等,其反向键索引无法使用,此时,Oracle将执行全表扫描;只有对反向键索引列进行 <>和 = 的比较操作时,其反向键索引才会得到使用。
发表评论
-
大数据量转存(抽取、同步)
2012-11-22 01:23 689在大数据量的转存过程中,建议使用分批转存(不要一次转存过来 ... -
Oracle数据库优化要点总结
2012-10-22 10:33 702当oracle出现性能缓慢、 ... -
PFILE与SPFILE差异
2012-10-17 11:56 7871.oracle实例启动时,寻找参数文件的顺序为 spf ... -
Oracle 分区简述
2012-10-12 12:01 685oracle8i起开始推出表分区的概念,最初只有范围分区、列表 ... -
Bitmap位图索引"高昂代价"与B-Tree比较
2012-10-10 08:54 681通过以下实验,来验证B ... -
关于Latch与Spin
2012-10-10 08:51 789latch 是一种轻量级用于保护oracle共享内存结构,用 ... -
完整的ORACLE的UTL_FILE的资料
2012-10-08 13:58 738转自:http://blog.csdn.net/alex197 ... -
RAID的类别使用(0,1,0+1,5)
2012-10-08 09:02 731raid0: 熟悉RAID 0的人都知道,它的读写速度是最高 ... -
oracle 裸设备使用和注解
2012-09-28 11:37 943看了一篇不错的的关于 ... -
EM无法登陆问题
2012-05-19 22:20 1283解决ORACLE的EM登录 这几 ... -
oracle的冷/热备份
2012-04-29 11:48 732一、 冷备份 冷 ... -
oracle安装、编译、参数配置
2011-06-09 19:23 696一、安装 按照以下标 ... -
Oracle个人笔记(SQL性能)2B
2011-06-09 19:20 6851.两者区别在哪?select trunc(sysdate,' ... -
start with...connect by prior用法
2011-06-09 19:18 663--当需要根据递归关系查询结果集时 start wit ... -
ORA-01157(表空间数据文件损坏需重建时)
2011-06-09 19:08 1028EM控制台报错如下: 处理步骤: 1. 备份该数据 ... -
工作积累(游标、权限、数组)2
2011-06-09 19:04 688--游标 一、显式游标通 ... -
工作积累(表空间、导出方案、触发器)1
2011-06-09 19:01 680--查看表空间、数据文件相关信息 1、查看表空间包含哪些数据 ... -
Oracle个人笔记(系统查询语句)3
2011-06-09 18:55 561查询锁的表的方法:(1 ... -
Oracle个人笔记(SQL性能)2A
2011-06-09 18:54 7231. ...group by (code,name); 性能要 ... -
Oracle个人笔记(基本规则)1
2011-06-09 18:52 6371.GRANT 权限 ON 表名(对象名) TO 用户;2.o ...
相关推荐
对于那些寻求提高搜索引擎实时索引性能的应用开发者和企业来说,本文提出的方法和结论具有重要的实际应用价值。通过对比分析了Lucene和MySQL在实现实时索引方面的性能差异,本研究为实时搜索引擎索引系统的优化提供...
在云计算时代的背景下,大型Web应用和海量数据的处理需求不断增长,传统的集中式...本文为如何利用Cassandra数据库构建高效的分布式反向索引提供了理论基础和实践指导,对于相关领域的研究和应用具有一定的借鉴意义。
这个名为"IndexerDemo"的项目是用Java语言实现的一个反向索引处理示例,可以帮助我们深入理解反向索引的工作原理及其在实际应用中的价值。 反向索引,顾名思义,是从关键词到文档的映射,与传统的文档到关键词的...
倒排索引(Inverted Index),又称为反向索引或逆向索引,是一种用于快速查询文档集合中包含特定词语的文档的技术。传统的正向索引是根据文档来建立索引,而倒排索引则是根据词汇来建立索引,每个词条指向包含该词条...
标题与描述概述的知识点...总之,Lucene的索引机制,尤其是其对反向索引的应用,是其成为强大搜索引擎库的基础。通过对索引文件格式的深入理解,我们可以更好地掌握Lucene的内部工作原理,进而优化搜索性能和结果质量。
本篇文章将深入探讨Oracle中的B*Tree索引、反向索引、降序索引、位图索引和函数索引。 1. **B*Tree索引**: - B*Tree索引是Oracle中最常见的索引类型,其结构类似于二叉树,可以高效地处理高基数数据列,即具有...
Oracle RAC 环境下索引热块的处理思路...在 Oracle RAC 环境下,索引热块争用的处理思路需要考虑到多实例并发 insert 表和多实例并发查询导致的索引热块争用,并 采用反向索引和按实例分区表等方法来缓解索引热块争用。
例如,在进行范围查询(`WHERE column > value`)时,由于反向索引的叶块中键值并未按顺序排列,因此无法通过简单的区域扫描完成检索,这限制了其在某些查询类型中的应用。 #### 三、降序索引:针对逆向排序查询的...
常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构,能高效地根据键值进行查找。B*树索引有以下几种子类型: - **索引组织表...
反向键索引(Reverse Key Index):反向键索引是B*树索引的一种特殊形式,其键值顺序被反转。例如,对于数值键值,最高位被存储在叶节点的最低位置,最低位则存储在最高位置。这种方式有助于减少键值冲突,特别是...
B-Tree索引适用于常规查询,而反向索引适用于长字符串,位图索引则适用于等值查询和低选择性列。单列索引基于单个列,而组合索引(复合索引)基于两个或更多列,创建时应考虑列的选择性和查询过滤条件。 在创建组合...
在Oracle数据库中,索引的种类繁多,包括B*Tree索引、反向索引、降序索引、位图索引和函数索引等。理解并正确使用这些索引类型对于提升查询性能至关重要。 首先,B*Tree索引是最常见的索引类型,适用于大部分常规...
3. 反向索引(Reverse Index):反向索引将键值反转存储,这有助于避免连续键值导致的数据块空间分配不均,从而提高索引的效率。 除了B*树索引,Oracle还支持其他类型的索引,如: 1. 位图索引(Bitmap Index):...
Oracle数据库是世界上最广泛使用的数据库系统之一,其性能优化的一个关键因素就是索引的使用。索引可以帮助快速查找和访问数据库中的数据,显著提高查询效率。本篇将详细讲解Oracle数据库中的索引及其重要性。 一、...
Oracle数据库中的索引是提升数据查询效率的关键工具,主要包括B*Tree索引、反向索引、降序索引、位图索引和函数索引五种类型。每种索引都有其特定的适用场景和优缺点。 1. **B*Tree索引**:B*Tree(B树)是最常见和...
本文将详细介绍Oracle数据库中的六种常见索引类型:B*Tree索引、反向索引、降序索引、位图索引、函数索引以及InterMedia全文索引,并探讨它们各自的适用场景。 #### 二、索引类型详解 ##### 1. B*Tree索引 B*Tree...
《基于Hadoop的反向索引库编目在图书馆管理系统中的应用》 在现代信息技术的推动下,图书馆管理系统已经从传统的图书检索模式转向了更为高效、智能化的数据处理方式。其中,“Library-Management-System:基于Hadoop...
反向索引主要应用于长文本字段,如CLOB和NCLOB,将索引键的最后一个字节作为第一个字节存储,提高查询性能。 4. **函数索引(Function-Based Index)** 允许基于列的函数结果创建索引,使得对函数的结果进行查询...
Oracle 索引的建立、修改、删除 ...反向键索引通过反向键保持索引的所有叶子键上的插入分布。有时,可用反向键索引来避免不平衡的索引。 对反向键索引的使用需要根据实际情况进行选择,避免不必要的索引建立和维护。