我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ORACLE中的查询转换有哪些

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ORACLE中的查询转换有哪些

本篇内容主要讲解“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

ORACLE中的查询转换有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ORACLE中的查询转换有哪些

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

Oracle中转换函数有哪些

这篇文章主要为大家展示了“Oracle中转换函数有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle中转换函数有哪些”这篇文章吧。转换函数 TO_CHAR函数将数据转换为字
2023-06-03

Oracle中查询表结构的方法有哪些

今天小编给大家分享一下Oracle中查询表结构的方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。方法一:在【命令窗口
2023-07-06

Oracle中大小写转换函数有哪些

这篇文章将为大家详细讲解有关Oracle中大小写转换函数有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。大小写转换函数 LOWER LOWER函数用小写形
2023-06-03

查询oracle中所有用户信息(转)

----查询oracle中所有用户信息----1、查询数据库中的表空间名称----1)查询所有表空间select tablespace_name from dba_tablespaces;select tablespace_name from user_tab

	查询oracle中所有用户信息(转)
2019-03-28

oracle常用经典SQL查询有哪些

本篇文章为大家展示了oracle常用经典SQL查询有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。oracle常用经典SQL查询常用SQL查询:1、查看表空间的名称及大小select t.tab
2023-06-06

VBS中有哪些转换函数

本篇文章为大家展示了怎么在VBS中有哪些转换函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。转换函数Asc 函数CBool 函数CByte 函数CCur 函数CDate 函数CDbl 函数Chr
2023-06-08

java中转换流有哪些类

今天就跟大家聊聊有关java中转换流有哪些类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系
2023-06-14

oracle提升查询效率的方法有哪些

提升Oracle查询效率的方法有:1. 使用索引:在表中创建适当的索引可以大大提高查询性能。索引可以帮助数据库快速定位到需要的数据,减少磁盘I/O的次数。2. 优化查询语句:通过优化查询语句,可以减少数据库的负担。例如,避免使用不必要的JO
2023-09-07

Golang中IP查询的方法有哪些

这篇“Golang中IP查询的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang中IP查询的方法有哪些”文
2023-07-05

c#中的类型转换方式有哪些

在C#中,有以下几种类型转换方式:1. 隐式类型转换:当目标类型的范围大于源类型时,可以进行隐式类型转换。例如,将int类型的值赋给long类型的变量。2. 显式类型转换:当目标类型的范围小于源类型时,需要使用显式类型转换。使用强制类型转换
2023-08-09

Golang中ASCII码转换的方法有哪些

本篇内容介绍了“Golang中ASCII码转换的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、ASCII码的介绍ASCII码是
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录