文档介绍:该【Oracle数据库优化之视图优化技巧公开课获奖课件赛课一等奖课件 】是由【业精于勤】上传分享,文档一共【17】页,该文档可以免费在线阅读,需要了解更多关于【Oracle数据库优化之视图优化技巧公开课获奖课件赛课一等奖课件 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。九次方培训
Oracle 数据库性能优化之复杂视图优化技巧
主讲人:研发中心,马飞
目录
一
含ROWNUM伪列的视图调优演练
二
含分析函数的视图调优演练
三
上机演练及答疑讨论
四
作业:自己实际操作练习
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;
1.
创建示例表及初始化数据
一一、包含ROWNUM伪列的视图调优演习脚本
create index t_lx_n1 on t_lx(object_name);
create index t_lx2_n1 on t_lx2(segment_name);
exec ('SYS','T_LX',cascade => true);
exec ('SYS','T_LX2',cascade => true);
2
创建索引、收集统计信息
一一、包含ROWNUM伪列的视图调优演习脚本
create or replace view t_lx_v as
select ,,
,sysdate rq ,
count(distinct ) 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 =
group by ,,
having count(0)>10;
3
创建复杂视图(含ROWNUM伪列) : T_LX_V
一、包含ROWNUM伪列的视图调优演习脚本
5
查看视图T_LX_V执行计划
一、包含ROWNUM伪列的视图调优演习脚本
6
增加提示符HINT后无法使用索引扫描-情况一
一、包含ROWNUM伪列的视图调优演习脚本
7
增加提示符HINT后无法使用索引扫描-情况二
一、包含ROWNUM伪列的视图调优演习脚本
8
增加提示符HINT后无法使用索引扫描-情况三
一、包含ROWNUM伪列的视图调优演习脚本
9
思考:如何对刚才的视图进行优化?
一、包含ROWNUM伪列的视图调优演习脚本
(1) 通过查看视图执行计划发现视图无法使用OBJECT_NAME
或SEGMENT_NAME列上索引。
(2) 将T_LX_V视图中的查询语句增长提醒符HINT也无法使用索引。
(3) 与否可以修改既有视中的查询语句进行优化?