索引分类
B树索引(默认类型)
位图索引
HASH索引
索引组织表索引
反转键(reverse key)索引
基于函数的索引
分区索引
位图连接索引
B树索引(默认类型)
B树索引在 Oracle中是一个通用索引。 在创建时它就默认的类型。B树索 引可以是一个列的(简单)索引,也可以是组合/复合(多个列)索引。 B树索引最多可以包括 32列
B树索引包括树枝块和树叶块
树枝块:包含链中下一个块的ID号
树叶块:包含了索引值、ROWID、以及指向前一个和后一个树叶块的指针。
下图为B树索引的结构图,


B-tree特点:
适合与大陆的增、删、改(OLTP)
不能用包含OR操作符的查询
适合高基数的列(唯一值多)
典型的树状结构
每个节点都是数据块
位图索引
位图索引适用于离散度较低的列,它的叶块中存放key, start rowid-end rowid,并应用一个函数把位图中相应key值置1,位图索引在逻辑or时效率最高。

例:
SQL>create bitmap index job_bitmap on emp1(job);
值/行 1 2 3 4 5 6 7 8 9 10 11 12 13 14
---------------------------------------------------------------
ANALYST 0 0 0 0 0 0 0 1 0 0 0 0 1 0
CLERK 1 0 0 0 0 0 0 0 0 0 1 1 0 1
MANAGER 0 0 0 1 0 1 1 0 0 0 0 0 0 0
PRESIDENT 0 0 0 0 0 0 0 0 1 0 0 0 0 0
SALESMAN 0 1 1 0 1 0 0 0 0 0 0 0 0 0
SQL>select count(*) from emp1 where job = 'CLERK' or job = 'MANAGER';
值/行 1 2 3 4 5 6 7 8 9 10 11 12 13 14
-----------------------------------------------------------------------------
CLERK 1 0 0 0 0 0 0 0 0 0 1 1 0 1
MANAGER 0 0 0 1 0 1 1 0 0 0 0 0 0 0
-----------------------------------------------------------------------------
or的结果 1 0 0 1 0 1 1 0 0 0 1 1 0 1
常用的B树索引类型:
唯一或非唯一索引(Unique or non_unique): 唯一索引指键值不重复。
SQL> create unique index empno_idx on emp1(empno);
或
SQL> create index empno_idx on emp1(empno);
组合索引(Composite):绑定了两个或更多列的索引。
SQL> create index job_deptno_idx on emp1(job,deptno);
反向键索引(Reverse):将字节倒置后组织键值。当使用序列产生主键索引时,可以防止叶节点出现热块现象(考点)。
SQL> create index mgr_idx on emp1(mgr) reverse;
函数索引(Function base):以索引列值的函数值为键值去组织索引
SQL> create index fun_idx on emp1(lower(ename));
压缩(Compress):重复键值只存储一次,就是说重复的键值在叶块中就存一次,后跟所有与之匹配的rowid字符串。
SQL> create index comp_idx on emp1(sal) compress;
升序或降序(Ascending or descending):叶节点中的键值排列默认是升序的。
SQL> create index deptno_job_idx on emp1(deptno desc, job asc);
可以更改索引属性:
alter index xxx ....
索引相关的数据字典
USER_INDEXES //索引主要信息
USER_IND_CULUMNS //索引列的信息