索引是oracle提供的一个对象,提供了一种快速访问数据的途径,提升了数据库的检索性能。索引使数据库程序无需对整个表进行全表扫描,就能够在其中找到所须要的数据,就想书的目录,能够经过他快速查找所需信息,无需阅读整本书。数据库
oracle的数据库管理系统在访问数据时使用如下3种访问方法;
1.全表扫描并发
2.经过ROWIDoracle
3.使用索引ide
索引的分类:函数
1,B树索引结构性能
索引的顶部为根,其中包含指向下一级索引的项。下一级为分支块,分支块又指向索引中下一级的块,最低一级的块称为叶节点,其中包含指向表数据行的索引项。叶节点为双向链接,有助于按关键字值得升序和降序扫描索引。spa
建立普通索引
建立普通索引的语法对象
create [unique] index 索引名称 on 表名(列名)[tablespace表空间名称]blog
[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位图索引
若是对此有兴趣,请扫下面二维码免费获取更多详情