什么是索引(Index)?
一种用于提升查询效率的数据库对象;通过快速定位数据的方法,减少磁盘I/O操作;
索引信息与表独立存放;
Oracle 数据库自动使用和维护索引。
索引分类
唯一性索引非唯一索引
创建索引的两种方式
自动创建- 在定义主键或唯一键约束时系统会自动在相应的字段
上创建唯一性索引。
手动创建- 用户可以在其它列上创建非唯一的索引,以加速查询。
创建/删除索引
可使用create index语句手动创建索引删除索引
使用drop index 语句删除索引
操作者须是索引的所有者、或拥有drop该index的权限
删除表时相关的索引(和约束)将被自动删除,但视图和序列将保留
create index [schema.]index
on table (column[, column]...);
create index myindex
on emp(ename);
drop index myindex;
创建索引的原则
下述情况可以创建索引字段取值分布范围很广
字段中包含大量空值
字段经常出现在where 子句或连接条件中
表经常被访问、数据量很大,且通常每次访问的数据量小于记录
总量的2%~4%
下列情况不适合创建索引
表很小字段不经常出现在where子句中
每次访问的数据量大于记录总数的2%~4%
表经常更新
被索引的字段作为表达式的的一部分被引用