最近在写一篇关于oracle索引的论文在这里就讨论一下索引的分类
逻辑上
Single column 单行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Functionbased函数索引
Domain 域索引
物理上
Partitioned 分区索引
NonPartitioned 非分区索引
Btree
Normal 正常型B树
Rever Key 反转型B树
Bitmap 位图索引
索引结构
Btree
适合与大量的增删改(OLTP)
不能用包含OR操作符的查询
适合高基数的列(唯一值多)
典型的树状结构
每个结点都是数据块
大多都是物理上一层两层或三层不定逻辑上三层
叶子块数据是排序的从左向右递增
在分支块和根块中放的是索引的范围
Bitmap:
适合与决策支持系统
做UPDATE代价非常高
非常适合OR操作符的查询
基数比较少的时候才能建位图索引
树型结构
索引头
开始ROWID结束ROWID(先列出索引的最大范围)
BITMAP
每一个BIT对应着一个ROWID它的值是还是如果是表示着BIT对应的ROWID有值
B*tree索引的话通常在访问小数据量的情况下比较适用比如你访问不超过表中数据的%当然这只是个相对的比率适用于一般的情况bitmap的话在数据仓库中使用较多用于低基数列比如性别之类重复值很多的字段基数越小越好