Oracle 索引的分类

看到 itpub 论坛上的一个帖子,对 Oracle 的索引分类总结得言简意赅,于是收藏过来。又最近一直看RAC,就补充了一点反向索引的东西。

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

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

索引结构:

B-tree:

最常见的索引结构,默认建立的索引就是这种类型的索引
适合于大量的增、删、改(OLTP);
不能用包含OR操作符的查询;
适合高基数的列(唯一值多)
典型的树状结构;
每个结点都是数据块;
大多都是物理上一层、两层或三层不定,逻辑上三层;
叶子块数据是排序的,从左向右递增;
在分支块和根块中放的是索引的范围;

Bitmap:
适合于决策支持系统;
做UPDATE代价非常高;
非常适合OR操作符的查询;
基数比较少的时候才能建位图索引;
树型结构:
索引头
开始ROWID,结束ROWID(先列出索引的最大范围)
BITMAP 每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT对应的ROWID有值;


反向 B-tree:
适用于 OPS 或 RAC 环境;
反转了索引码中每列的字节,降低索引叶块的争用;

你可能感兴趣的:(oracle,domain)