oracle数据库索引种类,分别什么情况下使用

关于索引有些地方我不太明白1.oracle常用的都有哪几种索引,比如唯一索引之类的,sql语句都是怎么写?2.都在什么情况下适合用?3.最正常的语句create index name on.......建出来的是那种索引啊?4.表中主键和外键是不是自动给分配索引,自己就不用建了呢?谢谢

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集群。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-02-10
Oracle数据库常见的索引种类有:B树索引、位图索引、反向键索引、基于函数的索引、
B树索引:如果表包含的数据非常多,并且经常在WHERE子句中引用某列或某几列,则应该基于该列或这几个列建立B树索引;
位图索引:当列的基数很低的时,当一个列的基数小于1%时,适用于位图索引;
反向索引:如果用户使用序列在表中输入记录,则反向键索引首先指向每个列键值的字节,然后在反向后的新数据上进行索引;但进行反向键索引时却是非递增的,这意味如果将其添加到子叶节点,可能会在任意的子叶节点中进行。
基于函数的索引:当数据库中遇到对字符大小写很敏感,如果用户不能确定输入数据的格式,甚至会产生一个严重的错误;这时候创建基于函数的索引就比较合适了;
第2个回答  推荐于2018-02-10
问题太多了吧?

逻辑上:
Single column 单列索引
Concatenated 多列索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based函数索引
Domain 域索引

物理上:
Partitioned 分区索引
NonPartitioned 非分区索引
B-tree:
Normal 正常型B树
Rever Key 反转型B树
Bitmap 位图索引

create index name on:就是普通的 非唯一索引 或 函数索引

主键会给分配索引,外键不会自动分配索引,需要自己创建本回答被提问者和网友采纳

oracle数据库索引种类,分别什么情况下使用
Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。2.位图索引(bitmap index)位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。3.基于函数的...

数据库索引有哪几种,怎样建立索引
Oracle数据库的索引类型包括B树索引、位图索引、反向键索引、函数索引、簇索引和分区索引。例如,B树索引通过保存排好序的列值和ROWID实现快速查询,位图索引则针对低基数字段,反向键索引处理数值排序问题,函数索引针对查询表达式建立索引。全局索引和局部索引则与表的分区管理密切相关,根据索引与分区表的关系...

Oracle的索引类型
有两大类索引:唯一索引:对于被索引列,索引表中每一行包含一个唯一值;非唯一索引:行中的索引值可重复;从索引中读取数据的操作取决于使用的索引类型和查询中访问索引的方法。对于CTXCAT类型的索引来说,当对基表进行DML操作的时候,Oracle自动维护索引。对文档的改变马上反映到索引中。CTXCAT是事务形的...

Oracle中10个索引优化,实用技巧
索引跳跃扫描 跳跃扫描用于在包含索引部分列的情况下提高查询效率。示例代码:即使查询条件不包含联合索引的第一列,Oracle仍可高效执行跳跃扫描。监控与优化索引使用 定期监控索引使用情况,适时优化,维持数据库性能。无具体示例代码,通过Oracle性能视图如V$INDEX_USAGE_INFO等进行监控。总结与优化的持续性 Or...

数据库索引有哪几种,怎样建立索引
使用DBA_INDEXES\/USER_INDEXES查询所有索引的具体设置情况。在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:一、B树索引:最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是...

oracle的索引有几种
Oracle 提供了多种不同类型的索引以供使用。简单地说, Oracle 中包括如下索引:1、 B* 树索引 这些是我所说的 “ 传统 “ 索引。到目前为止,这是 Oracle 和大多数其他数据库中最常用的索引。 B* 树的构造类似于二叉树,能根据键提供一行或一个行集的快速访问,通常只需很少的读操作就能找到...

oracle中什么情况下用索引
1.首先创建索引的目的是为了优化sql确保执行效率。2.这个表的数据量达到了用索引比不用索引快,前提是索引字段会在条件中出现,如果这个表的确够大但是索引字段不作为条件出现是不会走索引的,等于没有索引。3.这个表不会频繁的增删改,因为索引的创建会影响增删改的效率。4.索引字段不是重复的离谱的...

oracle索引的分类
在一个查询中合并多个B-树位图索引后,可以使性能显著提高. 位图索引使用固定长度的数据类型要比可变长度的数据类型好. 大的块也会提高对位图索引的存储和读取性能.建议不要在一些联机事务处理(OLTP)应用程序中使用位图索引. B-树索引的索引值中包含ROWID, 这样oracle就可以在行级别锁上锁定索引. 位图...

oracle 数据库如何建立索引 如何用索引?
--bitmap,创建位图索引 [ASC|DESC],…] | [express])[TABLESPACE tablespace_name][PCTFREE n1]--指定索引在数据块中空闲空间 [STORAGE (INITIAL n2)][NOLOGGING]--表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用 [NOLINE][NOSORT];--表示创建索引时不进行排序,默认不适用,如果...

Oracle中常见约束及索引的创建和使用
Oracle中,约束与索引的建立与使用对于优化数据库查询与维护数据完整性至关重要。创建约束时,主要有两种方法:可在创建表的阶段通过 `CREATE TABLE` 语句设立约束,或于表已创建后,运用 `ALTER TABLE` 语句来追加。约束类别包括:非空约束 目的是确保指定列中不会出现空值。唯一约束 限制表格中的每一行...

相似回答