视图优化oracle,干货|Oracle复杂视图优化案例分析

(2)修改视图定义,将谓词前提写入至基表前提中,并从新编译视图。

在应用Oracle数据库过程中,视图是作为数据库对象存在的,因而,在创建了如许的视图后,就可以经由过程对象或者数据字典来查看视图的相干信息。视图来源竽暌冠表,所有对视图数据的修改最终都邑被反竽暌钩到视图的基表中,这些修改必须服大年夜基表的完全性束缚,并同样会触发定义在基表上的触发器。

Oracle的视图分为简单视图和复杂视凸?现,简单视图就是大年夜单一的表中获取数据,个中不包含函数和数据组等,复杂视图是指在视图定义中包含了聚合函数、分析函数、用户自定义函数、多表接洽关系、子萌芽等。词攀类视图在某些特定前提下,优化器无法将视图外的谓词前提推送至视图内的基表上,即使在基表的列上创建索引也无法应用索引。本文将对该类视图提出一种优化筹划,可以明显进步该类视图的机能,并且表的数据量越大年夜,萌芽数据越少,机能进步越明显。下面,本文在实操基本上,对影响谓词推入身分及若何优化进行扼要阐释。

影响谓词推入身分

本文的实验情况是Oracle 11.2.0.4版本的数据库,笔者经由过程反复测试发明,若萌芽语句中存在以下两种情况,则优化器会阻拦视图谓词前提推入至基表上:一是视图中的萌芽中包含了ROWNUM伪列;二是视图中含有分析函数(如ROW_NUMBER() OVER(…))。若遇其它影响谓词推入的情况优化办法与此办法类似。别的,Oracle 11.2.0.4之前的版本可能存在其它影响谓词推入的情况。

优化办法

如不雅可以将这类视图中常用的谓词前提直接写入视图内,且写成动态的,同时将常用萌芽列按选择性由大年夜至小创建组合索引,则优化器可以尽可能地应用索引直接获取数据,再进行过滤计算等操作,以此达到优化目标。具体操作步调如下:

(1)创建一个帮助包,并创建两个函数,实际情况中若同时传入多个前提可自行扩充包中办法,每一个前提须要增长两个办法。

机能比较

下面经由过程具体的例子来解释若何对复杂视图进行优化。

优化前视图萌芽的履行筹划是全表扫描,履行效力低下。优化后视图萌芽的履行筹划是索引范围扫描。经由过程索引直接掏出须要拜访的数据,再进行后续处理,机能较优化前有大年夜幅晋升。

表4.1 优化前视图定义、萌芽语句及履行筹划

9db6ee65dca7ed331185ef16b6868dcd.jpg-wh_651x-s_4042302317.jpg

表4.2 优化后视图定义、萌芽语句及履行筹划

d6aa6491227f1ba9af0ce30d31034331.png

经由过程以上分析比较可以清楚地看出,优化后的视图可以应用索引且机能有了明显进步。总结起来,对于复杂萌芽优化思路应当是:如不雅视图中拜访的是少量数据,则尽可能经由过程索引先掏出须要处理的数据,然后再进行后续处理。此办法实用的前提是,复杂视图应用各类惯例优化办法(如增长索引,添加提示符等)都无效时。

经由过程将原视图和优化后视图进行比较,看出优化后视图的履行筹划成本由349降到86,优化效不雅异常明显。表中红框部分内容需特别引起留意。

然则,这一办法也有必定弊病,那就是与其它优化办法比拟,此法须要做的前期工作较多,如建立帮助包,对原视图进行修改和从新编译。别的还需测试优化前后萌芽结不雅是否一致,萌芽前需调用帮助包,将萌芽前提传入视图中,不过优化后的视图是不须要加萌芽前提的。

须要指出的是,该办法只在拜访视图中少量数据时效不雅明显,如不雅拜访数据量大年夜,该办法不实用。

【编辑推荐】经由过程Oracle sql developer对象 大年夜sqlserver迁徙数据到oracle

Lotus-Notes数据库向ORACLE数据迁徙

Oracle基于数据发掘的不完全恢复

针对Oracle数据库备份恢复的一些懂得与总结

Oracle 12.2启用数据库对象的In-Memory转换填充【义务编辑:枯木 TEL:(010)68476606】

推荐阅读

在上篇文┞仿中我们向您展示了如安在 Linux 上创建一个共享目次。此次,我们会为您介绍若何将 Linux 上指定目次的读写权限付与用户。应用用户组来为用户付与指定目次的读写权限有两种办法>>>详细阅读

地址:http://www.17bianji.com/lsqh/35088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值