文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ORACLE中的查询转换有哪些

2023-05-31 20:16

关注

本篇内容主要讲解“ORACLE中的查询转换有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ORACLE中的查询转换有哪些”吧!

一、子查询展开(subquery unnesting)

子查询展开分两种:

要么将子查询中的表或视图拆开来跟外面的表做连接,

要么不拆开子查询,而是当作一个内嵌视图与外面的表做连接

不是所有子查询都会做子查询展开,子查询展开的条件

子查询展开后的SQL跟原SQL一定要完全等价

对于子查询不拆开,而是当作一个内嵌视图的子查询展开,改写后的SQL成本之要小于原SQL才行

子查询前的where条件是下列条件之一,那么满足一定条件就会做子查询展开

single-row(即=,<,>,>=,<=,<>)

exists

not exists

in

not in

any

all

二、视图合并(view merging)

把视图不在当作一个独立的处理单元,而是将其拆开,把构成视图的基表拿出来跟外部查询中的表进行连接,分三种

简单视图合并(simple view merging)

指不含外连接,以及所带视图的视图定义中不含distinct ,group by 等聚合函数的目标SQL的合并,另外不能出现以下

集合运算符(union ,union all,minus,intersect)

connect by 子句

rownum

外连接视图合并(outer join view merging)

外部查询的表与视图之间使用了外连接,或者视图的定义SQL中使用了外连接,以及所带视图的视图定义中不含distinct ,group by 等聚合函数的目标SQL的合并

有个简单的前提,要么该视图做为外连接的驱动表,如果作为被驱动表,则该视图的sql定义中只能有一张表

复杂视图合并(complex view merging)

所带视图的视图定义中含有distinct ,group by 等聚合函数的目标SQL的合并

复杂视图合并会把sql拆分,先把基表跟外部表连接后在做distinct ,group by,所有复杂视图合并不一定会带来成本值的减少,oracle会比较合并后的SQL,只有当合并后SQL的成本值低于原SQL成本值,才会做复杂视图合并

两个隐含参数 

通过查询转换前后的成本值来决定是否转换,参数_optimizer_cost_based_transformation可以在session和system级别修改,默认值'linear',默认通过成本值比较来转换sql,改为‘OFF',则不管成本值都会进行复杂视图合并。

_complex_view_merging,默认为true,允许复杂视图合并,改为false,关闭复杂视图合并

三、星型转换

star_transformation_enabled 

默认为false ,需要启用则设置为true,也可以设置为temp_disable(不建临时表)

四、连接谓词推入

优化处理带视图的SQL

仅支持以下类型

视图定义中含有union all/union

视图定义中含有distinct

视图定义中含有group by

于外部查询的连接时外连接

与外部查询的连接时半连接

与外部查询的连接时反连接

五、连接因式分解

优化器处理带union all 的SQL时的一种优化方式

11gr2中才有

六、表扩展(table expansion)

优化器处理分区表的一种优化方式

11gr2才有

hint 两个 no_expand_table ,expand_table

七、表移除(table elimination)

10gr2中已有,适合表与表之间通过外键连接,或者表与表之间是外连接的情况

到此,相信大家对“ORACLE中的查询转换有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯