oracle的索引有几种?各有何用途?

1. b-tree索引
Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE 
INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。
2. 位图索引(bitmap index)
位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。
3. 基于函数的索引
比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。
4. 分区索引和全局索引
这2个是用于分区表的时候。前者是分区内索引,后者是全表索引
5. 反向索引(REVERSE)
这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值
(10001,10002,10033,10005,10016..)
这种情况默认索引分布过于密集,不能利用好服务器的并行
但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。
6.HASH索引
HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。使用HASH索引必须要使用HASH集群。

时间: 2024-10-24 20:33:14

oracle的索引有几种?各有何用途?的相关文章

oracle 不走索引的几种情况

不走索引的其它原因:   1.建立组合索引,但查询谓词并未使用组合索引的第一列,此处有一个INDEX SKIP SCAN概念.   2.在包含有null值的table列上建立索引,当时使用select count(*) from table时不会使用索引.   3.在索引列上使用函数时不会使用索引,如果一定要使用索引只能建立函数索引.   4.当被索引的列进行隐式的类型转换时不会使用索引.如:select * from t where indexed_column = 5,而indexed_co

oracle 创建索引

适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引. oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引 创建Oracle索引的标准语法: CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名; 创建唯一索引: CREATE unique INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名; 创建组合索引: CREATE INDEX 索引名 ON 表名 (列1,列2) TABLESPA

oracle 创建索引思考(转)

在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这 一点的话,需要数据库管理员做出很大的努力.具体的来说,要做到这个三个适当有如下几个要求. 一. 根据表的大小来创建索引. 虽然给表创建索引,可以提高查询的效率.但是数据库管理员需要注意的是,索引也需要一定的开销的.为此并不是说给所有的表都创建索引,那么就 可以提高数据库的

Oracle之索引(Index)实例讲解 - 基础

Oracle之索引(Index)实例讲解 - 基础 索引(Index)是关系数据库中用于存放表中每一条记录位置的一种对象,主要目的是加快数据的读取速度和数据的完整性检查.索引的建立是一项技术性要求非常高的工作. 一般在数据库设计阶段就要考虑到如何设计和创建索引. 1. 创建索引 创建索引的语法: CREATE [UNIQUE] INDEX [schema.] index ON [schema.] table (column [ASC | DESC], column [ASC | DESC]...

Oracle 分区索引

分区索引(或索引分区)主要是针对分区表而言的.随着数据量的不断增长,普通的堆表需要转换到分区表,其索引呢,则对应的转换到分区索引.分区索引的好处是显而易见的.就是简单地把一个索引分成多个片断,在获取所需数据时,只需要访问更小的索引片断(块)即可实现.同时把分区放在不同的表空间可以提高分区的可用性和可靠性.本文主要描述了分区索引的相关特性并给出演示示例. 1.分区索引的相关概念a.分区索引的几种方式:表被分区而索引未被分区:表未被分区,而索引被分区:表和索引都被分区b.分区索引可以分为本地分区索引

Oracle 建立索引及SQL优化

Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问速度. 建设原则: 1.索引应该经常建在Where 子句经常用到的列上.如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%.则应该考虑. 2.对于两表连接的字段,应该建立索引.如果经常在某表的一个字段进行Order By 则也经过进行索引. 3.不应该在小表上建设索引. 优缺点:

[转]Oracle DB 索引

索引是数据库对象,可以通过创建索引来提高一些查询的性能.在你创建主键或唯一约束条件时,服务器会同时自动创建索引. 索引 索引具有以下特点: ? 是一个方案对象 ? Oracle Server 可用来通过指针加快行检索速度 ? 可通过使用快速路径访问方法迅速找到数据来减少磁盘的输入/ 输出(I/O) ? 与建立索引的表无关 ? 由Oracle Server 自动使用和维护 Oracle Server  索引是一个方案对象,可以通过指针加快行检索速度.可以显式创建索引,也可以自动创建索引.如果没有在

oracle位图索引

以下内容主要都是关于oracle 10g位图索引,重点是存储,其它优缺点,查询机制等也略微介绍,概因为存储机制是根基.内容主要分四个部分:1)来源于http://blog.chinaunix.net/uid-20687159-id-1894992.html2)来源于http://blog.sina.com.cn/s/blog_4c6fef63010085m8.html3)来自oracle官方文档的和其它一些.  4)个人的试验,看位图索引的情况.-------------------------

索引优化原则及Oracle中索引总结

索引建立原则 确定针对该表的操作是大量的查询操作还是大量的增删改操作. 尝试建立索引来帮助特定的查询.检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引. where语句中不得不对查询列采用函数查询,如upper函数,最好建立相应函数索引: 在SQL语句中经常进行GROUP BY.ORDER BY的字段上建立索引 用于联接的列(主健/外健)上建立索引: 在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定: 尝试建立复合索引来进一步提高系统性能.修