第6章 Oracle索引(创建、简介、技巧)汇.pptVIP

第6章 Oracle索引(创建、简介、技巧)汇.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 Oracle索引(创建、简介、技巧)汇

本章内容 6.1 索引概述 6.2 创建索引 6.3 修改索引 6.4 查看索引 7.下面查询TOPIC为TEE的记录,看看是否用到了刚创建的“标题大写函数索引”。打开“SQL Scratchpad”工具,输入如下代码,如图所示。 SELECT * FROM SCOTT.SALES WHERE UPPER(TOPIC)=TEE; 8.单击“解释计划…”按钮,解释计划的结果如图所示。 该查询检索了SALES表的所有行,并没有使用我们创建的函数索引“标题大写函数索引”。因为,SALES表中数据太少(只有7条记录),全表扫描速度已足够快,因此没有必要使用索引。 ? 当需要修改已创建的索引时,可以使用ALTER INDEX语句。 用户想要修改自己方案中的索引,需要具有ALTER INDEX系统权限,如果想要修改其他用户方案中的索引,则需要具有ALTER ANY INDEX系统权限。 6.3 修改索引 一、重命名索引 重命名索引可以使用ALTER INDEX语句。例如,将上节中为SALES表创建的索引“标题索引”改名为“标题B树索引”,代码如下。 ALTER INDEX SCOTT.标题索引 RENAME TO 标题B树索引; 在“SQL Plus Worksheet”中执行以上SQL代码,如图所示。 二、合并索引 表在使用一段时间后,由于用户不断对其进行更新操作,而每次对表的更新必然伴随着索引的改变,因此,在索引中会产生大量的碎片,从而降低索引的使用效率。 有两种方法可以清理碎片:合并索引和重建索引。 合并索引就是将B树叶子节点中的存储碎片合并在一起,从而提高存取效率,但这种合并并不会改变索引的物理组织结构。 二、合并索引 使用如下代码对SALES表的“标题索引”进行合并。 ALTER INDEX SCOTT.标题索引 COALESCE; 在“SQL Plus Worksheet”中执行以上SQL代码,结果如图所示。 三、重建索引 当表中一个已编制索引的值被更新后,旧值会从索引中删除,新值将被插入索引的另一个部分。旧值释放的空间将不能被再次使用。随着更新或删除索引值的增多,索引中不可用空间的量也在增加,这种情况称为索引滞留。由于滞留索引中的数据和空闲区混在一起,查看索引的效率便会降低。因此,如果在索引列上频繁进行UPDATE和DELETE操作,为了提高空间的利用率,应该定期重建索引。 重建索引相当于删除原来的索引,然后再创建一个新的索引,因此,CREAT INDEX语句中的选项同样适用于重建索引。 三、重建索引 重建索引使用ALTER INDEX语句的REBUILD选项。 例如,使用如下代码重建SALES表的“标题索引”。 ALTER INDEX SCOTT.标题索引 REBUILD; 在“SQL Plus Worksheet”中执行以上SQL代码,结果如图所示。 三、重建索引 合并索引和重建索引都能消除索引碎片,但两者在使用上有明显的区别。 合并索引不能将索引移动到其他表空间,但重建索引可以; 合并索引代价较低,无需额外存储空间,但重建索引恰恰相反; 合并索引只能在B树的同一子树中合并,不改变树的高度,但重建索引重建整个B树,可能会降低树的高度。 四、删除索引 当以下情况发生时,需要删除索引: 不需要该索引时。 当索引中包含损坏的数据块,或碎片过多时,应删除该索引,然后再重建。 如果移动了表的数据,将导致索引无效,此时应删除该索引,然后再重建。 当向表中装载大量数据时,Oracle也会向索引增加数据,为了加快装载速度,可以在装载之前删除索引,在装载完毕后重新创建索引。 删除索引使用DROP INDEX语句。要删除用户自己方案中的索引,需要具有DROP INDEX系统权限,而要删除其他用户方案中的索引,则需要具有DROP ANY INDEX系统权限。 下面删除SALES表中的“标题索引”。 1.在OEM中,选择要删除的索引,右键单击该索引项,在快捷菜单中选择“移去”,如图所示。 限制: 6、不能对LONG类型列加约束条件(NULL、NOT NULL、DEFAULT除外),如:关键字列(PRIMARY KEY)不能是 LONG 数据类型。 7、LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。 8、LONG类型列不能用于分布查询。 9、PL/SQL过程块的变

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档