ORACLE 11G学习笔记—索引

一、为什么要用索引?
在查询海量数据记录时,使用常规的方法是将所有的记录都读取出来,再把数据与条件进行对比后将符合条件的筛选出来,对时间和I/O的开销都比较大。如果采用索引,只需要在索引中找符合条件的索引字段值,就可以通过保存再索引中的rowid快速找到表中对应的记录,减少系统开销。

二、什么场景下使用索引?
在查询一个数据表中存有海量数据记录,当对表执行指定条件的查询时。

三、列举四类索引?
1、建立B树索引
2、建立位图索引
3、建立反向键索引
4、基于函数的索引

四、写出其中两类索引的创建SQL…
以emp表为例:
1、建立B树索引
create index emp_deptno_index on emp(deptno)–在emp表中的deptno列创建索引,命名为emp_deptno_index;
pctfree 25 --为将来的insert操作所预留的空闲空间;
tablespace users;–用于指定索引段所在的表空间,此处表空间为users。
ORACLE 11G学习笔记—索引
2、建立位图索引
create bitmap index emp_sal_bmp;
on emp(sal) --在emp表中的sal列建立位图索引,名称为emp_sal_bmp;
tablespace users; --用于指定索引段所在的表空间,此处表空间为users。
ORACLE 11G学习笔记—索引
以上两种索引较为常用。

五、为什么要重建索引?SQL语句是什么?
为表建立索引后,随着对表不对进行更新、插入和删除操作,索引中会产生越来越多的存储碎片,会对索引的工作效率产生负面影响,可通过重建索引(或合并索引)来清除碎片。
alter index emp_deptno_index rebuild;–对名称为emp_deptno_index的索引进行重建。
ORACLE 11G学习笔记—索引
六、更改索引的表空间可以么?如果可以 请写出SQL…
可以
ORACLE 11G学习笔记—索引
将名称为emp_deptno_index的索引重建后,更改至example表空间中。
七、删除索引的原因是什么?请写出删除索引SQL…
删除索引的原因:1、移动了表中的数据,导致索引中包含过多存储碎片,需要删除并重建索引;
2、通过一段时间的监视,发现很少有查询会使用到该索引时。
ORACLE 11G学习笔记—索引
八、如何查询索引信息?
1、显示表中所有索引:
select index_name,index_type
from dba_indexes
where owner=‘SYSTEM’;
ORACLE 11G学习笔记—索引
2、查询索引列
ORACLE 11G学习笔记—索引
3、显示函数索引
ORACLE 11G学习笔记—索引
ORACLE 11G学习笔记—索引