Oracle Index

1,B树索引
2,位图索引

create bitmap index emp_bitmap_job on emp ( job );

B树索引和位图索引的适用环境

B树索引位图索引
大表,返回行数<5%同左
经常使用where子句查询的列同左
离散度高的列离散度低的列
更新键值代价低更新键值代价高
逻辑 and 效率高逻辑 or 效率高
用于 OLTP用于 OLTP

1)B树索引

唯一或非唯一索引(unique or non_unique): 唯一索引指键值不重复。
create unique index empno_idx on emp( empno );
create index empno_idx on emp( empno );

组合索引(composite):绑定了两个或更多列的索引。
create index deptno_job_idx on emp( deptno , job );

反向键索引(reverse):将字节倒置后组织键值;当使用序列产生主键索引时,可以防止叶点出现热块象。
create index empno_idx on emp( deptno ) reverse;

函数索引(function):以索引列值的函数值为键值去组织索引。
create index fun_idx on emp( lower(ename) ) ;

压缩索引(compress):重复的键值在叶块中只存储一次,后跟所有与之匹配的rowid字符串。
create index comp_idx on emp( sal ) compress;

升序或降序索引(ascending or desending):节点中的键值排列默认是升序。
create index deptno_job_idx on emp( deptno desc, job asc ) ;


索引相关的数据字典:
select * from user_indexes; --索引主要信息
select * from user_ind_columns; --索引列的信息

Oracle的执行计划常见的四种索引扫描方式:

1)索引唯一扫描(index unique scan)

通过唯一索引查找一个数值返回单个ROWID。对于唯一组合索引,要在where的谓词 “=” 后包含所有列的 “布尔与”。

2)索引范围扫描(index range scan)

在非唯一索引上,可能返回多行数据,所以在非为一索引上都使用索引范围扫描。使用index range scan的3种情况:
(a)在唯一索引列上使用range操作符(>,<,<>,>=,<=,between)
(b)在唯一组合索引上,对组合索引使用部分列进行查询(含引导列),导致查询出多行。
(c)对非唯一索引列上进行的任何查询,不含 " 布尔或 "

3)索引全扫描(index full scan)

对整个index进行扫描,并且顺序的读取其中数据。
全Oracle索引扫描只在CBO模式下才有效。CBO根据统计数值得知进行全Oracle索引扫描比进行全表扫描更有效时,才进行全Oracle索引扫描,而且此时查询出的数据都必须从索引中可以直接得到。

4)索引快速扫描(index fast full scan)

扫描索引中的所有的数据块,与index full scan 很类似,但是一个显著的区别是 index full scan 是根据叶子块的双向列表顺序读取,读取的块是有顺序的,也是经过排序的,所以返回的列表也是排序的。而 index fast full scan 在读取叶子块时的顺序完全由物理存储位置决定,并采用多块读,每次读出 DB_FILE_MULTIBLOCK_READ_COUNT 个块。


1)索引高度较低,可快速定位,当对一个值查询单个的某一个值时,这时利用索引比全表扫描可以大大的减少逻辑读。
2)索引存储索引列的值,可优化聚合,当进行count,sum,avg等一些聚合函数时,当索引可以解决时,就可以利用索引当做一个“痩表”,访问路径就会减少,但切记,在count(*)时,一定要保证列值不为空才会利用索引。
3)索引有序,可优化排序,当对查询结果需要进行排序时,oracle则会利用索引已经是有序的特点,利用索引来避免重新排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值