Oracle 11g R2 索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 11g R2 索引相关的知识,希望对你有一定的参考价值。
索引是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位图索引
如果对此有兴趣,请扫下面二维码免费获取更多详情
以上是关于Oracle 11g R2 索引的主要内容,如果未能解决你的问题,请参考以下文章