索引

索引:使用是索引的目的是提高查询的效率.

索引,相当于书的目录,提高数据检索速度。提高效率(视图不可以提高效率)

  • 一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中
  • 索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度
  • 索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引
  • 在删除一个表时, 所有基于该表的索引会自动被删除
  • 通过指针加速 Oracle 服务器的查询速度
  • 通过快速定位数据的方法,减少磁盘 I/O

1 创建索引

1
2
3
4
5
create index 索引名 on 表名(列名);

create index idx_emp on emp(empno);

--emp(empno) 表名(列名) 一般列名使用主键列

2 删除索引

1
2
drop index 索引名;
drop index idx_emp_bak;

3 查询创建的索引

1
2
select index_name from user_indexes;
select xxxx_name from user_xxxxs;

4 索引的原理?
在查询的时候, where条件后面要使用创建索引的时候的列, oracle先查询索引表,
从索引表中找到该列的值对应的rowid, 找到rowid再从表中根据rowid找到那一行记录.
5 注意点:
创建索引的列最后是值的分布很广泛且重复的概率很低.

下列情况不要创建索引:

  • 表很小
  • 列不经常作为连接条件或出现在WHERE子句中
  • 查询的数据大于2%到4%
  • 表经常更新