第5章 索引与数据完整性[60页]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

创建索引
说明:
(1)
UNIQUE:指定索引所 基于的列(或多列)值 必须唯一。默认的索引 是非唯一索引。Oracle 建议不要在表上显式定 义UNIQUE索引。
就应设置得大一点。不能给索引指定
PCTUSED。
03 创建索引
1.以界面方式创建索引 2.以命令方式创建索引
创建索引
1.以界面方式创建索引
以在XSB表的“姓名”列创建索引为例,使用SQL Developer创建索引的操作过程如下。 (1)启动SQL Developer,展开连接myorcl,右击要创建索引的XSB表,选择“索引”菜单下的“创建索引”子菜 单项,如图5.1所示。 (2)在弹出的“创建索引”窗口中创建索引,如图5.2所示。
/*指定是否创建相应的日志记录*/
[COMPUTE STATISTICS]
/*生成统计信息*/
[COMPAESS | NOCOMPRESS]
/*对复合索引进行压缩*/
[TABLESPACE <表空间名>]
/*索引所属表空间*/
[SORT | NOSORT]
/*指定是否对表进行排序*/
[REVERSE]
(1)
合理安排索引列。在CREATE INDEX 语句中,列的排序会影响查询的性能,
通常将最常用的列放在前面。创建一 (3)
个索引来提高多列查询时,应该清楚 地了解这个多列索引对什么列的存取 有效、对什么列的存取无效。
索引正确的表和列。如果经常检
索的内容仅为包含大量数据的表
(2) 中少于15%的行,就需要创建索引。
必须在要索引的表上具有INDEX权限。
必须具有CREATE ANY INDEX权限。
语法格式为:
CREATE [UNIQUE∣BITMAP] INDEX
/*索引类型*/
[<用户方案名>.]<索引名>
ON <表名>(<列名> | <列名表达式> [ASC∣DESC] [,…n])
[LOGGING | NOLOGGING]
01 索引的分类
索引的分类
(1)索引按存储方法分类,可以分为两类:B*树索引和位图索引。 B*树索引的存储结构类似图书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于图书的大 目录,叶块相当于索引到的具体的书页。Oracle用B*树(B*-tree)机制存储索引条目,以保证用最短路 径访问键值。默认情况下大多使用B*树索引,该索引就是通常所说的唯一索引、逆序索引等。 位图索引主要用来节省空间,减少Oracle对数据块的访问。它采用位图偏移方式来与表的行ID号对应。 采用位图索引一般是在重复值太多的表字段情况下。位图索引在实际密集型OLTP(数据事务处理)中 用得比较少,因为OLTP会对表进行大量的删除、修改和新建操作,Oracle每次进行操作都会对要操作 的数据块加锁,所以多人操作时很容易产生数据块锁、等待、甚至死锁现象。在OLAP(数据分析处理) 中应用位图索引有优势,因为OLAP中大部分是对数据库的查询操作,而且一般采用数据仓库技术,所 以大量数据采用位图索引时节省空间比较明显。当创建表的命令中包含有唯一性关键字时,不能创建位 图索引。创建全局分区索引时也不能选用位图索引。
第5章 索引与数据完整性
索引
索引
在Oracle 11g中,索引是一种供服务器在表中快速查找一行的数据库结构。在数据库中建立索引主要有以下作 用:
(1)快速存取数据;
(3)实现表与表之间的参 照完整性;
(2)既可以改善数据库性 能,又可以保证列值的唯 一性;
(4)在使用ORDER BY、 GROUP BY子句进行数据检索 时,利用索引可以减少排序 和分组的时间。

基于函数的索引。基于函数的索引是指索引中的一列或者多列是一个函数或者表达式,索引根据函数或者表 达式计算索引列的值。可以将基于函数的索引创建成为位图索引。
02 使用索引的原则
使用索引的原则
在表中插入数据后创建索引。在表中插入数 据后,创建索引效率将更高。因为如果在装 载数据之前创建索引,那么插入每行时 Oracle都必须更改索引。
(4)
根据索引大小设置存储参数。创建
百度文库
索引之前应先估计索引的大小,以 便更好地规划和管理磁盘空间。单
(6)
个索引项的最大值大约是数据块大
小的一半。
指定索引数据块空间。创建索引时,索
(5)
引的数据块是用表中现存的值填充的, 直到达到PCTREE为止。因此,如果打算
将许多行插入到被索引的表中,PCTREE
创建索引
(3)所有选项设置完后单击“确定”按钮完成索引的创建,索引创建完后单击XSB表,在“索引”选项页可以看到 新创建的索引XSB_NAME_INDEX,如图5.3所示。
创建索引
2.以命令方式创建索引
使用SQL命令可以灵活方便地创建索引。在使用SQL命令创建索引时,必须满足下列条件之一。
索引的表或簇必须在自己的模式中。
索引的分类
(2)索引按功能和索引对象可分为以下六种类型。
唯一索引。唯一索引意味着不会有两行记录相同的索引键值。唯一索引表中的记录没有RowID,所以不能再对 ① 其建立其他索引。在Oracle 11g中,要建立唯一索引,必须在表中设置主关键字,建立了唯一索引的表只按照
该唯一索引结构排序。
② 非唯一索引。不对索引列的值进行唯一性限制的称为非唯一索引。
为了改善多个表的相互关系,常
常使用索引列进行关系连接。
使用索引的原则
例如,当在A、B、C三列上创建索引时,实际得到的顺序如下: A AB ABC 所以,可以获得A列的索引、A和B列结合的索引以及A、B、C三列结合的索引。不能得到的顺序如下: B BC C
使用索引的原则
限制表中索引的数量。尽管表可以有任意数 量的索引,但是索引越多,在修改表中的数 据时对索引做出相应更改的工作量也越大, 效率也就越低。因此,应及时删除目前不用 的索引。
③ 分区索引。所谓分区索引是指索引可以分散地存在于多个不同的表空间中,其优点是可以提高数据查询的效率。
④ 未排序索引。未排序索引也称为正向索引。由于Oracle 11g数据库中的行是按升序排序的,因此创建索引时不 必指定对其排序而使用默认的顺序。
⑤ 逆序索引。逆序索引也称为反向索引。该索引同样保持索引列按顺序排列,但是颠倒已索引的每列的字节。
相关文档
最新文档