索引
索引结构
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;

浙公网安备 33010602011771号