Oracle数据库优化之视图优化技巧

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

一、包含ROWNUM伪列的视图调优演练脚本 10 将视图中的语句改写为以下写法可以使用索引,但 是视图不灵活,每次都需要修改语句,不通用。
一、包含ROWNUM伪列的视图调优演练脚本 11 对刚才改写的视图进行修改,使之可以传递条件。
借助包来为视图传递条件,并且可以确认视图在创建时编译成功
一、包含ROWNUM伪列的视图调优演练脚本 12 对刚才改写的视图进行修改,使之可以传递条件。
一、包含ROWNUM伪列的视图调优演练脚本 13 调用改写后的视图并为视图传递条件。
二、含分析函数的视图调优演练 包含分析函数的视图情况同上,大家可以参照脚本 进行上机实践操作。
1
附件
一 二
包含ROWNUM伪列的视图调优演练脚本 包含分析函数的视图调优演练脚本
谢谢大家
17
九次方培训
Oracle 数据库性能优化之复杂视图优化技巧
主讲人:研发中心,马飞
目录
一 二 三 四
含ROWNUM伪列的视图调优演练 含分析函数的视图调优演练 上机演练及答疑讨论 作业:自己实际操作练习
一 一、包含ROWNUM伪列的视图调优演练脚本
1. 创建示例表及初始化数据
drop table t_lx; drop table t_lx2; create table t_lx as select * from dba_objects t ; create table t_lx2 as select * from dba_segments t ; begin for i in 1..5 loop insert into t_lx select * from t_lx; insert into t_lx2 select * from t_lx2; end loop; commit; end;
一、包含ROWNUM伪列的视图调优演练脚本 5 查看视图T_LX_V执行计划
一、包含ROWNUM伪列的视图调优演练脚本 6 增加提示符HINT后无法使用索引扫描-情况一
一、包含ROWNUM伪列的视图调优演练脚本 7 增加提示符HINT后无法使用索引扫描-情况二
一、包含ROWNUM伪列的视图调优演练脚本 8 Fra Baidu bibliotek加提示符HINT后无法使用索引扫描-情况三
一 一、包含ROWNUM伪列的视图调优演练脚本
2 创建索引、收集统计信息
create index t_lx_n1 on t_lx(object_name); create index t_lx2_n1 on t_lx2(segment_name); exec dbms_stats.gather_table_stats('SYS','T_LX',cascade => true); exec dbms_stats.gather_table_stats('SYS','T_LX2',cascade => true);
一、包含ROWNUM伪列的视图调优演练脚本 3 创建复杂视图(含ROWNUM伪列) : T_LX_V
create or replace view t_lx_v as select t1.owner,t1.object_name, t1.object_type,sysdate rq , count(distinct t1.owner) cs from (select owner,object_name, object_type,rownum r# from t_lx ) t1 , (select owner,segment_type ,segment_name,rownum r# from t_lx2) t2 where t1.object_name=t2.segment_name group by t1.OWNER,t1.object_type,t1.object_NAME having count(0)>10;
一、包含ROWNUM伪列的视图调优演练脚本 9 思考:如何对刚才的视图进行优化?
(1) 通过查看视图执行计划发现视图无法使用OBJECT_NAME 或SEGMENT_NAME列上索引。 (2) 将T_LX_V视图中的查询语句增加提示符HINT也无法使用索引。 (3) 是否可以修改现有视中的查询语句进行优化?
相关文档
最新文档