索引

索引结构

1. 在索引表中存放的是rowid(表emp行的地址),索引表是按照一定的数据结构进行存储的,可以使用算法来简化查询操作。

2. 如果索引是多列,例如create index myindex on emp(deptno,job);则会产生两个索引表第一个为deptno的索引表,当deptno相同时候,

存储在第二个job索引表中。

创建索引

自动创建

在定义primary key或unique约束后系统会自动在相应的列上创建唯一性索引

手动创建

用户在其他类上创建非唯一的索引,以加速查询

什么情况下可以创建索引

1. 列中的数据值分布范围很广

2. 列经常在where子句或连接条件中出现

3. 表经常被访问而且数据量很大,访问的数据大概栈总量的2%到4%

什么情况不要创建索引

1. 表很小

2. 列不经常作为连接条件或不经常出现在where子句中

3. 表查询的数据大于2%到4%

4. 表经常更新的列不建议建索引

查看索引信息

使用数据字典视图user_indexes和user_ind_columns查看索引的信息

select ic.index_name,ic.column_name,
ic.column_position col_pos,ix.uniqueness
from user_indexes ix,user_ind_columns ic
where ic.index_name = ix.index_name
and ic.table_name = 'emp';

删除索引

只有索引的拥有者或者有drop any index权限的用户才可以删除索引

drop index myindex;

 

posted @ 2018-07-30 11:09  风雪夜_归人  阅读(171)  评论(0)    收藏  举报