索引分类
- B树索引:
通过在索引中保存排序的索引列的值以及记录的物理地址ROWID来实现快速查找。 - 位图索引
当索引列的值基数很低时(比如表示性别的字段,只有男和女,这就是基数很低),创建B树索引显然不是明智之选,创建位图索引想必是你最好的选择。
create bitmap index index_name on table(column) tablespace users;
- 反向键索引
如果我们要为主键添加索引时,考虑到主键如果是递增的话,B树索引也是不合适的,会使得树的两边不公平,这时采用反向键索引就可以很轻松地解决问题。
create index index_name on table(column) reverse tablespace users;
alter index index_name rebuild reverse;
- 基于函数的索引
如果我们需要在where中用函数,那么创建基于函数的索引是很明智的选择。
create index index_name on table(lower(column)) tablespace users;
索引注意点
- 索引不是越多越好,索引会影响DML操作速度,原因很简单,每个DML语句都要增加更新到索引这个动作。
- 外键应该加索引,提高多表连接性能,原因也很简单,多表连接的实质是一个where语句。
- 大表才需要建索引,避免在小表建索引。
- 指定索引块空间PCTFREE,可以为未来的insert操作做准备。