如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Oracle索引索引的概念1、概念索引是建立在表上的可选对象,是对数据库表中一列或多列的值进行排序的一种结构。设计索引的目的是为了提高查询的速度。2、理解对索引理解:索引类似于书的目录,可以迅速定位并找到要查看的内容。有了索引,DML操作就能快速找到表中的数据,而不需要扫描整张表。因此对于包含大量数据的表来说,设计索引,可以大大提高操作效率。在书中,目录是内容和页码的清单,而在数据库中,索引是数据和存储位置的列表。索引在逻辑上和物理上都与相关的表的数据无关,当创建或删除一个索引时,不会影响基本的表、数据库应用或其他索引,当插入、更改和删除相关的表记录时,Oracle会自动管理索引,如果删除索引,所有的应用仍然可以继续工作。因此,在表上创建索引不会对表的使用产生任何影响,但是,在表中的一列或多列上创建索引可以为数据的检索提供快捷的存取路径,提高检索速度。索引一旦建立后,当在表上进行DML操作时,Oracle会自动维护索引,并决定何时使用索引。索引的使用对用户是透明的,用户不需要在执行SQL语句时指定使用哪个索引及如何使用索引,也就是说,无论表上是否创建有索引,SQL语句的用法不变。用户在进行操作时,不需要考虑索引的存在,索引只与系统性能相关。索引的原理当在一个没有创建索引的表中查询符合某个条件的记录时,DBMS会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描。表扫描方式需要遍历整个表,效率很低。例子:假定有一张表当查询topic为pen时,如果没有在字段topic创建索引,就会将这个表搜索,效率降低,如果在topic字段上创建索引Oracle对全表进行一次搜索,将每条记录的TOPIC值按升序排列,然后构建索引条目,即(TOPIC值,ROWID值),存储到索引段中。oracle中的索引B数索引、位图索引、反向键索引B树索引是Oracle数据库中最常用的一种索引。当使用CREATEINDEX语句创建索引时,默认创建的索引就是B树索引创建语法:createindex索引名on表名(表字段名DESC/ASC);B树索引的结构就是一个树,主要数据都集中在最底层的叶子节点上,无论用户搜索哪个分支上的叶子节点,所经过的索引层次是相同的,花费时间是一样的。另外,B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询适用于基数大的列所谓基数,是指某个列可能拥有的不重复值的个数,比如性别列的基数为2(只有男和女)。位图索引,Oracle会扫描整张表,并为索引列的每个取值建立一个位图。在这个位图中,对表中每一行使用一位(bit,取值为0或1)来表示该行是否包含该位图的索引列的取值,如果为1,则表示该位对应的ROWID所在的记录包含该位图索引列值。最后通过位图索引中的映射函数完成位到行的ROWID的转换。创建语法:createbitmapindex索引名on表名(列名);适用于基数小的列(例如:性别只有两个取值)反向键索引是一种特殊的B数索引,在索引基于含有序数的列时非常有用。如果一个索引基于含有这种数据的列,往往会因为数据过于密集而降低读取性,反向索引通过简单的反向被索引列中数据来解决问题。首先反向每个列键值的字节,然后再反向后的新数据上进行索引。创建语法createindex索引名on表名(列名)REVERSE一般用于自动增长的列2、单列索引和复合索引一个索引可以由一个或多个列组成。基于单个列所创建的索引称为单列索引,基于两列或多列所创建的索引称为多列索引。唯一索引和非唯一索引索引可以是唯一的,也可以是非唯一的。唯一索引可以确保在定义索引的列中,表的任意两行值都不是相同的。非唯一索引没有在列值上规定此限制。Oracle自动为表主键创建唯一索引创建语法唯一索引:createuniqueindex索引名on表名(列名);