返回顶部
首页 > 资讯 > 数据库 >ORACLE表与表联接的几种方式
  • 170
分享到

ORACLE表与表联接的几种方式

摘要

   三大表与表联接方式 NESTED LOOPS 嵌套循环 HASH JOIN 哈希联接 SORT MERGE 排序合并联接       NESTED LOOPS  嵌套循环   嵌套循环的本质是将外部数据集连接到内部数据集,对于外部数据


	ORACLE表与表联接的几种方式
[数据库教程]

 

 三大表与表联接方式

NESTED LOOPS 嵌套循环

HASH JOIN 哈希联接

SORT MERGE 排序合并联接

 

 

 

NESTED LOOPS  嵌套循环

  嵌套循环的本质是将外部数据集连接到内部数据集,对于外部数据集中与单表谓词匹配的每一行,数据库将检索内部数据集中满足连接谓词的所有行。

工作原理:

         a.优化器确定驱动行源并将其指定为外部循环。

         b.优化器将另一行源指定为内部循环。

         c.从外部行源获取一行

         d.探查内部行源以查找与谓词条件匹配的行

         e.重复前面的步骤,直到通过获取请求获得所有行

 

嵌套循环优先使用场景:

          a.查询结果集偏小。

          b.数据库以优化器模式设置为联接大型数据集FIRST_ROWS

          c.内部循环有有效访问方式(例如存在高效索引

 

HINT : 

   ----d 为内部循环表-被驱动表

 

2.HASH JOIN 哈希联接

  优化器使用两个数据集中的较小者在内存中的连接键上构建哈希表,并使用确定性哈希函数指定哈希表中存储每一行??的位置。然后,数据库扫描更大的数据集,探测哈希表以查找满足联接条件的行。

   工作原理:

 

  1. 数据库对较小的数据集执行完整扫描,然后在PGA和磁盘上构建一个哈希桶阵列。

    当PGA哈希区域填满时,数据库将在哈希表中找到最大的分区,并将其写入磁盘上的临时空间。数据库将磁盘上属于该磁盘分区的任何新行以及PGA中的所有其他行存储。因此,哈希表的一部分在内存中,一部分在磁盘上。

  2. 数据库在读取其他数据集时会经过第一遍。

    对于每一行,数据库执行以下操作:

    1. 将相同的哈希函数应用于一个或多个联接列,以计算相关哈希桶的数量。

    2. 探测哈希表,以确定存储中的行中是否存在行

      如果散列值指向内存中的一行,则数据库将完成连接并返回该行。但是,如果该值指向磁盘上的哈希分区,则数据库使用与原始数据集相同的分区方案将该行存储在临时表空间中。

  3. 数据库逐个读取每个磁盘上的临时分区

  4. 数据库将每个分区行连接到相应的磁盘临时分区中的行.

 

哈希联接优先使用场景:

    a.联接相对大量的数据(或必须连接很大比例的小表)且联接为等联接。

 

HINT : USE_HASH

 

3.SORT MERGE 排序合并联接

  排序合并联接是嵌套循环联接的一种变体。

如果联接中的两个数据集尚未排序,则数据库将它们排序。这些是SORT JOIN操作。对于第一个数据集中的每一行,数据库都会根据匹配的行来探测第二个数据集,并将它们连接起来,并将其起始位置基于上一次迭代中进行的匹配。这就是MERGE JOIN操作。

 

工作原理:

    

与嵌套循环联接中一样,排序合并联接读取两个数据集,但在尚未对它们进行排序时对其进行排序。

对于第一个数据集中的每一行,数据库在第二个数据集中找到起始行,然后读取第二个数据集,直到找到不匹配的行。

 

通常情况下,只有在以下情况发生时,才会使用排序合并连接:

      1)RBO模式

      2)不等值连接(>,<,>=,<=)

      3)哈希连接被禁用时(_HASH_JOIN_ENABLED=false)

      4)数据源已排序

 

 HINT:

USE_MERGE

 

    

oracle表与表联接的几种方式

原文地址:https://www.cnblogs.com/lwq9614/p/13335251.html

您可能感兴趣的文档:

--结束END--

本文标题: ORACLE表与表联接的几种方式

本文链接: https://lsjlt.com/news/7315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ORACLE表与表联接的几种方式
       三大表与表联接方式 NESTED LOOPS 嵌套循环 HASH JOIN 哈希联接 SORT MERGE 排序合并联接       NESTED LOOPS  嵌套循环   嵌套循环的本质是将外部数据集连接到内部数据集,对于外部数据...
    99+
    2021-06-19
    ORACLE表与表联接的几种方式 数据库入门 数据库基础教程 数据库 mysql
  • oracle表连接的方式有哪几种
    内连接(INNER JOIN):返回两个表中符合连接条件的记录。 外连接(OUTER JOIN):包括左外连接(LEFT J...
    99+
    2024-04-09
    oracle
  • MySQL表关联的常用方式有哪几种
    本文主要给大家介绍MySQL表关联的常用方式有哪几种,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL表关联的常用方式有哪几种吧。建表及插入数...
    99+
    2024-04-02
  • oracle导出表的方式有哪几种
    在Oracle数据库中,可以使用以下几种方式来导出表的数据: 使用EXP和IMP工具:EXP工具用于导出数据,IMP工具用于导入...
    99+
    2024-05-06
    oracle
  • SQL 多表联合查询的几种方式详解
    目录前言正文内连接等值连接/相等连接自然连接自连接外连接左外连接右外连接全外连接/完全外连接交叉连接/笛卡尔积总结前言 连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连接运算符可以实现多个表查询。 正文 连...
    99+
    2023-02-15
    SQL 多表联合查询 SQL 多表查询 SQL 联合查询
  • SQL 多表联合查询的几种方式详解
    目录前言正文内连接等值连接/相等连接自然连接自连接外连接左外连接右外连接全外连接/完全外连接交叉连接/笛卡尔积总结前言 连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连...
    99+
    2023-02-15
    SQL 多表联合查询 SQL 多表查询 SQL 联合查询
  • Oracle删除表的几种方法
    drop table books;的指令会将表放到回收站里,  用   flashback table "BIN$1Oiy3qm/QJubov1BwBUOgw==$0" to ...
    99+
    2024-04-02
  • mysql复制表的几种方式
    mysql复制表的几种方式  所描述的方法还请实际测试一下再使用. 1、复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用del...
    99+
    2023-09-03
    数据库 sql mysql
  • MySQL分库分表的几种方式
    目录一、为什么要分库分表二、什么是分库分表三、分库分表的几种方式1.垂直拆分2. 水平拆分四、分库分表带来的问题五、分库分表技术如何选型一、为什么要分库分表 如果一个网站业务快速发展...
    99+
    2024-04-02
  • oracle 修改表名几种方法
    alter table byp3 rename to byp_2rename byp_2 to byp3 create byp_2 as select * from byp3(...
    99+
    2024-04-02
  • Oracle多表查询,四种连接方式
     一、聚合函数:(都会忽略null数据)        1、常用的有5种:将字段中所有的数据聚合在一条中            1、sum(字段名)        :求总和                2、avg(字段名)        ...
    99+
    2016-06-30
    Oracle多表查询,四种连接方式 数据库入门 数据库基础教程 数据库 mysql
  • Hive表的几种存储格式
    Hive的文件存储格式: textFile     textFile为默认格式     存储方式:行存储         缺点:磁盘开销大;数据解析开销大;压缩的text文件,hive无法进行合并和拆分 sequencefile  ...
    99+
    2016-06-06
    Hive表的几种存储格式
  • ORACLE中常用的几种正则表达式小结
    ORACLE正则表达式我基本用到的就一下几种,前四种最长用到 REGEXP_LIKE(source_char, pattern, match_parameter)REGEXP_SUB...
    99+
    2024-04-02
  • Oracle实现竖表转横表的几种常用方法小结
    目录第一种:使用decode实现第二种:使用case when实现有能耗表,记录各个城市水、电、热的能耗情况,表结构如下: 名称类型备注E_CODEVARCHAR2(10)城市的CODEE_VALUENUMBER...
    99+
    2023-04-24
    Oracle 竖表转横表 oracle 竖转横
  • MySQL中复制表的方式你知道几种
    mysql 想必大家比较熟悉了, 我们常见的crud  sql 想必大家也是手到拈来。 但是我在今儿上数据库课的时候,我好像连mysql中复制表的基础写法 都不会。 可能工作中不常用,但作为基础 还是想写出来分享给大家。 这里 我介绍四种常...
    99+
    2023-09-05
    mysql 数据库 sql
  • mysql复制表的几种常用方式总结
    目录mysql复制表的几种方式 1、复制表结构及数据到新表2、只复制表结构到新表3、复制旧表的数据到新表(假设两个表结构一样)4、复制旧表的数据到新表(假设两个表结构不一样)5、可以将表1结构复制到表26、可以...
    99+
    2023-04-10
    mysql复制表语句 mysql如何复制表 mysql数据表复制
  • mysql表级锁的模式有几种
    本篇内容介绍了“mysql表级锁的模式有几种”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、表共享读锁,添加共享读锁的表不会阻塞其他ses...
    99+
    2023-06-20
  • oracle数据库连接方式有哪几种
    Oracle数据库连接方式有以下几种:1. 使用SQL*Plus连接:SQL*Plus是Oracle数据库自带的一个命令行工具,可以...
    99+
    2023-10-12
    oracle数据库
  • oracle表连接的方式有哪些
    在Oracle数据库中,表连接的方式主要有以下几种: 内连接(INNER JOIN):内连接是最常用的连接方式,它只返回两个表之...
    99+
    2024-05-08
    Oracle
  • html中空格的几种表现形式
    这篇文章主要介绍了html中空格的几种表现形式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。空格的表示形式:1、空格字符实体“&nbsp;”、“&ensp;”...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作