DBA培训教程之Oracle索引详解PPT版本90页.doc

上传人:laozhun 文档编号:2394862 上传时间:2023-02-17 格式:DOC 页数:3 大小:14.50KB
返回 下载 相关 举报
DBA培训教程之Oracle索引详解PPT版本90页.doc_第1页
第1页 / 共3页
DBA培训教程之Oracle索引详解PPT版本90页.doc_第2页
第2页 / 共3页
DBA培训教程之Oracle索引详解PPT版本90页.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《DBA培训教程之Oracle索引详解PPT版本90页.doc》由会员分享,可在线阅读,更多相关《DBA培训教程之Oracle索引详解PPT版本90页.doc(3页珍藏版)》请在三一办公上搜索。

1、第6章 Oracle索引Oracle9i关系数据库 本章内容6.1 索引概述6.2 创建索引6.3 修改索引6.4 查看索引6.1 Oracle索引概述一、索引的概念 索引是建立在表上的可选对象,设计索引的目的是为了提高查询的速度。但同时索引也会增加系统的负担,进行影响系统的性能。 目录可以帮助读者快速查找所需要的内容,数据库中的索引就类似于书的目录。有了索引,DML操作就能快速找到表中的数据,而不需要扫描整张表。因此,对于包含大量数据的表来说,设计索引,可以大大提高操作效率。在书中,目录是内容和页码的清单,而在数据库中,索引是数据和存储位置的列表。一、索引的概念 索引是建立在表上的可选对象。

2、 索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率。 索引在逻辑上和物理上都与相关的表的数据无关,当创建或删除一个索引时,不会影响基本的表、数据库应用或其他索引,当插入、更改和删除相关的表记录时,Oracle会自动管理索引,如果删除索引,所有的应用仍然可以继续工作。因此,在表上创建索引不会对表的使用产生任何影响,但是,在表中的一列或多列上创建索引可以为数据的检索提供快捷的存取路径,提高检索速度。一、索引的概念 索引一旦建立后,当在表上进行DML操作时,Oracle会自动维护索引,并决定何时使用索引。 索引的使用对用户是透明的,用户不需要在执行SQL语句时指定使

3、用哪个索引及如何使用索引,也就是说,无论表上是否创建有索引,SQL语句的用法不变。用户在进行操作时,不需要考虑索引的存在,索引只与系统性能相关。二、索引的原理 当在一个没有创建索引的表中查询符合某个条件的记录时,DBMS会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描。 全表扫描方式需要遍历整个表,效率很低。二、索引的原理假设SALES表的数据如表所示。ROWID伪列表示记录的物理存储位置。SALES表的TOPIC列没有特定的顺序。现在查询TOPIC为PEN 的记录。由于在TOPIC列上没有索引,该语句会搜索所有的记录。因为即使找到了PEN也不能保证表中只有一个PEN,必须全部

4、搜索一遍。二、索引的原理在TOPIC列上建立索引,Oracle对全表进行一次搜索,将每条记录的TOPIC值按升序排列,然后构建索引条目,即(TOPIC值,ROWID值),存储到索引段中。当查询PEN的记录时,如何查找?三、索引的类型 Oracle支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。 1单列索引和复合索引 2B树索引 3位图索引 4函数索引 1. 单列索引和复合索引 一个索引可以由一个或多个列组成。 基于单个列所创建的索引称为单列索引,基于两列或多列所创建的索引称为多列索引。 2. B树索引 B树索引是Oracle数

5、据库中最常用的一种索引。当使用CREATE INDEX语句创建索引时,默认创建的索引就是B树索引。 B树索引是按B树结构或使用B树算法组织并存储索引数据的。B树索引就是一棵二叉树,它由根、分支节点和叶子节点三部分构成。其中,根包含指向分支节点的信息,分支节点包含指向下级分支节点和指向叶子节点的信息,叶子节点包含索引列和指向表中每个匹配行的ROWID值。叶子节点是一个双向链表,因此可以对其进行任何方面的范围扫描。 2. B树索引 B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何,查询速度基本相同。另外,B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询。 2. B树索引B

6、树索引的分类如下所示。 Unique:唯一索引,其索引值不能重复,但允许为NULL。在 创建索引时指定UNIQUE关键字可以创建唯一索引。当建立“主 键约束条件”时Oracle会自动在相应列上建立唯一索引,主键 列不允许为NULL。 Non-Unique:非唯一索引,其索引值可以重复,允许为 NULL。默认情况下,Oracle创建的索引是非唯一索引。 Reverse Key:反向关键字索引。通过在创建索引时指定 “REVERSE”关键字,可以创建反向关键字索引,被索引的每个 数据列中的数据都是反向存储的,但仍然保持原来数据列的 次序。 3. 位图索引 在B树索引中,保存的是经排序过的索引列及其

7、对应的ROWID值。但是对于一些基数很小的列来说,这样做并不能显著提高查询的速度。所谓基数,是指某个列可能拥有的不重复值的个数。比如性别列的基数为2(只有男和女)。 因此,对于象性别、婚姻状况、政治面貌等只具有几个固定值的字段而言,如果要建立索引,应该建立位图索引,而不是默认的B树索引。 3. 位图索引 当创建位图索引时,Oracle会扫描整张表,并为索引列的每个取值建立一个位图。在这个位图中,对表中每一行使用一位(bit,取值为0或1)来表示该行是否包含该位图的索引列的取值,如果为1,则表示该位对应的ROWID所在的记录包含该位图索引列值。最后通过位图索引中的映射函数完成位到行的ROWID的

8、转换。3. 位图索引 4. 函数索引 前面的索引都是直接对表中的列创建索引,除此之外,Oracle还可以对包含有列的函数或表达式创建索引,这就是函数索引。 当需要经常访问一些函数或表达式时,可以将其存储在索引中,当下次访问时,由于该值已经计算出来了,因此,可以大大提高那些在WHERE子句中包含该函数或表达式的查询操作的速度。 4. 函数索引 函数索引既可以使用B树索引,也可以使用位图索引,可以根据函数或表达式的结果的基数大小来进行选择,当函数或表达式的结果不确定时采用B树索引,当函数或表达式的结果是固定的几个值时采用位图索引。 4. 函数索引 下面通过一个例子看看函数索引的用法。在SALES表中,TOPIC列的值如果采用首字母大写的方式存储。 4. 函数索引现在使用下列代码查询:SELECT FROM SALES WHERE TOPICTEE将没有结果。现在忽略大小写,将代码修改如下:SELECT FROM SALES WHERE UPPERTOPICTEE这样可以查到相应的结果,但是,由于不是直接查询TOPIC列,所以,即使在TOPIC列上创建了索引也无法使用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号