索引:使用是索引的目的是提高查询的效率.
索引,相当于书的目录,提高数据检索速度。提高效率(视图不可以提高效率)
- 一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中
- 索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度
- 索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引
- 在删除一个表时, 所有基于该表的索引会自动被删除
- 通过指针加速 Oracle 服务器的查询速度
- 通过快速定位数据的方法,减少磁盘 I/O
1 创建索引
1 | create index 索引名 on 表名(列名); |
2 删除索引
1 | drop index 索引名; |
3 查询创建的索引
1 | select index_name from user_indexes; |
4 索引的原理?
在查询的时候, where条件后面要使用创建索引的时候的列, oracle先查询索引表,
从索引表中找到该列的值对应的rowid, 找到rowid再从表中根据rowid找到那一行记录.
5 注意点:
创建索引的列最后是值的分布很广泛且重复的概率很低.
下列情况不要创建索引:
- 表很小
- 列不经常作为连接条件或出现在WHERE子句中
- 查询的数据大于2%到4%
- 表经常更新