目录
一、索引简介
1、索引是一个独立的数据库对象,和数据表table一样。在Oracle中,数据库对象object都是通过段segment结构表示。我们在数据字典dba_segment中,可以使用索引的名称搜索出与segment_name相等的字典项目。
2、索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。
3、索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率
4、索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表;
5、索引一旦建立,在表上进行DML操作时(例如在执行插入、修改或者删除相关操作时),oracle会自动管理索引,索引删除,不会对表产生影响
6、索引对用户是透明的,无论表上是否有索引,sql语句的用法不变
7、Oracle数据库会为表的主键和包含唯一约束的列自动创建索引。
8、数据表和索引是可以分开进行存储的。通常,从性能角度考虑我们常将两者放置在不同的Tablespace中,这样做的目的主要是为了分散物理IO。
二、索引原理
1、若没有索引,搜索某个记录时(例如查找name='wjq')需要搜索所有的记录,因为不能保证只有一个wjq,必须全部搜索一遍
2、若在name上建立索引,oracle会对全表进行一次搜索,将每条记录的name值按照升序排列,然后构建索引条目(name和rowid),存储到索引段中,查询name为wjq时即可直接查找对应地方
3、创建了索引并不一定就会使用,oracle自动统计表的信息后,决定是否使用索引,表中数据很少时使用全表扫描速度已经很快,没有必要使用索引
三、索引的分类
分享题目:Oracle中B-Tree、Bitmap和函数索引使用案例总结-创新互联
网站地址:http://scgulin.cn/article/iijcd.html