索引是oracle提供的一个对象,提供了一种快速访问数据的途径,提高了数据库的检索性能。索引使数据库程序无需对整个表进行全表扫描,就可以在其中找到所需要的数据,就想书的目录,可以通过他快速查找所需信息,无需阅读整本书。

oracle的数据库管理系统在访问数据时使用以下3种访问方法; 1.全表扫描

2.通过ROWID

3.使用索引

索引的分类:

1,B树索引结构

索引的顶部为根,其中包含指向下一级索引的项。下一级为分支块,分支块又指向索引中下一级的块,最低一级的块称为叶节点,其中包含指向表数据行的索引项。叶节点为双向连接,有助于按关键字值得升序和降序扫描索引。

创建普通索引 创建普通索引的语法

create [unique] index 索引名称 on 表名(列名)[tablespace表空间名称]

[unique]用于指定唯一索引,默认情况下为非唯一索引

[tablespace]为索引指定表空间

练习环境 在雇员EMP表中,在雇员名称列创建B树索引,oracle创建的普通索引如果没有说

明类型就是B树索引 查看刚刚创将的索引 EMP_NAME_IDX 创建唯一索引和非唯一索引 唯一索引:保证定义索引的列中没有任何重复值,唯一索引的索引关键字只能指向表中的一行。

非唯一索引:定义索引的列中可以有重复值

在薪水级别salgrade表中,为级别编号(grade)列创建唯一索引 反向键索引 与常规B树索引相反,反向键索引在保持顺序的同时,反转索引列的字节。反向键索引通过反转索引键的数据值,使得索引的修改平均分布到整个索引树上,主要应用多个实例可同时访问同一个数据库的场景中。使用反向键索引将索引插入操作分散在多个索引块键,如果使用B数索引的情况下,由于索引关键字在索引树中的位置相近而处于同一个索引块中,多个实例同时更新时会发生冲突,从而导致I/O访问上的瓶颈。

语法如下:

CREATE index 索引名称 on 表名(列名)REVERSE; 位图索引 位图索引适用于低基数的列,即该列的值是有限的几个,例如雇员表中的工种(job)列,即便是几百万条雇员记录,工种也是有限的。JOB列可以作为位图索引

位图索引的优点:

相对B树索引而言,基于位图索引列的查询可以减少响应时间

相比其他索引技术,位图索引占用空间有所减少

位图索引不应当在频繁发生INSERT,update,delete操作的表上使用,这是因为单个位图索引项指向表的很多数据行,当修改索引项时需要将其指向的数据行全部锁定,这会严重降低数据库的并发处理能力。位图索引适用于数据仓库和决策支持系统中.

在雇员表(emp)表中,为工种(job)列创建位图索引 在雇员表(emp)中,为雇员名称(ename)列创建大写函数索引

基于函数的索引 查看索引列相关的信息:索引名,表名,索引列 维护索引 重建索引:

索引需要维护,如果建立了索引的表中有大量的删除和插入操作,会使得索引很大,因为删除操作后,删除值得索引空间不能被自动重新使用。对于大表和DML操作频繁的表,索引的维护是很重要的。ORACLE提供了REBUILD指令来重建索引,使索引空间可以重用删除值所占用的空间,使索引更加进奏。 在重建索引时,也可以修改索引的表空间 合并索引碎片

合并索引碎片可以释放部分磁盘空间,是索引维护的一种重要方式,也是维护磁盘空间的方式 删除索引

DROP INDEX语句删除索引

删除雇员表中的INDEX_BIT_JOB位图索引 如果对此有兴趣,请扫下面二维码免费获取更多详情