索引
唯一索引:
列中无重复值,唯一约束。
oracle自动为主键和为一键列创建唯一索引
语法:create unique index 索引名 on 表名(列名);
组合索引:
在表中多个字段上创建的索引
列按任意顺序排列
where子句中包含多个列的查询,可提高访问速度。
语法:create index 索引名 on 表名(列名1,列名2,...,列名n):
反向键索引:
反转索引列中的每一个字节
将数据插入操作分布在整个索引上
如:
标准索引 1001,1002,1003,1004
反向键索引 1001,2001,3001,4001
在比较是,标准索引从高到低匹配,每次均重复比较前三位100,而反向键索引在比较第一位时候就可以产生结果,速度在这种情况下更快。
语法:create index 索引名 on 表名(列名) reverse;
alter index 索引名 rebuild noreverse;--重建标准索引
位图索引:
为低基数列创建(重复率比较大,如员工表中职位字段)
如图,位图索引将rowid的范围和一个bitmap值绑定到某一类字段上,bitmap中1表示本字段出现,0表示其他字段出现。
语法:create bitmap index 索引名 on 表名();
索引组织表:
表数据存储在与其关联的索引中
对表数据的修改智慧导致对索引的更新
在主键上创建
create table 表名(
列名 类型 primary key,
...,
...
) organization index;
查询速度非常快。
普通表:
rowid唯一标识行
隐式rowid列
基于rowid的访问
顺序扫描返回所有行
可以存储在簇中
支持分发、复制和分区
索引组织表:
主键唯一地标识行
没有隐式rowid列(有一个无意义的值)
基于主键的访问
完全索引扫描返回所有行,并按主键顺序排列
不能存储在簇中
不支持分发、复制和分区
基于函数的索引:
基于一个或多个列上的函数或表达式创建的索引
表达式中不能包含聚集函数(sum count avg min max)
不能在lob、ref或嵌套表列上创建
在查询中使用函数时自动调用该索引,提高查询速率。
语法:create index 索引名 on 表名(lower(字段名));
键压缩索引:
将索引键拆分为前缀项和后缀项
在一个索引块中,通过后缀项共享达到压缩的目的
节省磁盘空间,在一个索引块中可以存储更多的键
语法:create index 索引名 on 表名(字段名1,字段名2) compress 压缩字段名在建立索引时参数位置;
分区索引:
索引存储在不同分区中
本地索引:本地前缀索引、本地无前缀索引
全局索引:全局前缀索引、全局无前缀索引