Oracle数据库实用教程(第二版) 唐远新(含源代码) 第06章 索引与视图新.ppt
文本预览下载声明
Oracle数据库实用教程 (第二版) 唐远新 曲卫平 李晓峰等编著 中国水利水电出版社 2009.6 第6章 索引与视图 索引与表和簇相关,用于缩短查询数据的时间 索引中存储了记录的关键字和ROWID 考虑按索引的逻辑设计、物理实现分类建立索引 索引的逻辑分类从应用的角度划分 索引的物理分类从其物理存储划分 索引在逻辑上和物理上都与相关表的数据无关 索引需要单独的存储空间。否则使用表所在表空间 创建或删除一个索引不会影响基于数据表的数据库应用或其他索引 创建索引后一般会增加数据更新操作的执行时间 6.1 管理索引 Oracle数据库的索引模式 1.索引概述 (1) B-树索引 (2) B-树簇索引 (3) 散列簇索引 (4) 全局和本地索引 (5) 反序索引 (6) 位图索引 (7) 基于函数的索引 (8) 域索引 B-树索引(B-tree index)又称平衡树索引,是现代关系型数据库中最为普遍采用的索引 管理索引的准则 (1) 在表中插入数据后创建索引 (2) 索引正确的表和列 (3) 为性能而安排索引列 (4) 限制每个表的索引的数量 (5) 删除不再需要的索引 (6) 指定索引数据块空间使用参数 (7) 估计索引大小并设置存储参数 (8) 为每个索引指定表空间 (9) 考虑创建并行索引 (10) 考虑创建具有NOLOGGING的索引 (11) 考虑合并或重建索引时的损益 (12) 在停用或删除索引之前考虑开销 1.索引概述 如果满足如下条件则需要创建索引 (1) 列有较大的取值范围 (2) 列有很多空值,但经常查询所有具有值的行 (3) 一列或多列被经常一起用于WHERE条件或连接条件 (4) 表很大,且大部分查询只返回不到2%~4%的数据行 1.索引概述 具有如下一个或多个特征的列适合作索引列 (1) 列中的值相对比较唯一 (2) 取值范围大(适合建常规索引) (3) 取值范围小(适合建位图索引) (4) 列中有许多空值,但经常查询所有具有值的行 LONG和LONG RAW列不能被索引 创建索引的语法图 1.索引概述 创建索引的简要语法 CREATE [UNIQUE|BITMAP] INDEX [schema.]index ON [schema.]table (column [ASC | DESC] [, …] ) [INITRANS n] [MAXTRANS n] [PCTFREE n] [LOGGING | NOLOGGING [NOSORT] [STORAGE storage] [TABLESPACE tablespace] ; 默认情况下,索引中数据按升序(ASC)排列 1.索引概述 数据字典 USER_INDEXES USER_IND_COLUMNS 例6.1 为雇员表emp建立以ename为索引列的索引,索引名为emp_ename_index,索引存放到表空间my_index。 EXA_06_01.SQL 唯一索引可以保证在索引列上不会有两行相同的值 CREATE UNIQUE INDEX 语句 2.创建唯一索引 例6.2 为部门表dept的dname列创建唯一索引。 EXA_06_02.SQL 例6.3 唯一索引测试。 EXA_06_03.SQL 位图索引适用于仅有几个固定值的列 3.创建位图索引 例6.4 给student表的性别列创建位图索引。 EXA_06_04.SQL 将整个位图索引段装入内存,地提高了查找效率 初始化参数CREATE_BITMAP_AREA_SIZE 默认值为8MB。 创建位图索引的限制 (1) 不能在全局分区索引上创建位图索引 (2) 不能同时指定UNIQUE和位图索引 (3) 不能在本地索引中使用位图索引 (4) 不能用位图索引来生成具有唯一性的索引和反序索引 CREATE BITMAP INDEX语句 适用于经常执行以某种函数形式为条件查询数据的应用 因函数值已计算,极大地改善了查询的执行性能 基于函数的表达式索引列被称为虚列 4.创建基于函数的索引 例6.5 设student表的学生编号sno列的编码规则为:4位年+2位系别+2位班级+2位顺序号。为学号列按年级查询学生的应用创建一索引。 EXA_06_05.SQL 在较早版本中,用户需具有如下之一系统特权 QUERY REWRITE CREATE ANY INDEX 索引默认保存到与表相同的表空间 在约束定义子句中,使用USING INDEX子句为约束指定存储空间 5.设置与约束相关的索引 例6.6 为student表name列的唯一约束指定索引表空间 EX
显示全部