Oracle中三种表连接算法的总结

 更新时间:2013年07月12日 12:18:33   作者:  
Oracle有三种表连接技术,分别是嵌套连接、合并连接和哈希连接。以下就是对这三种表连接算法进行了详细的分析介绍,需要的朋友可以参考下

1. 嵌套循环连接 (NESTED LOOP Join)
嵌套连接把要处理的数据集分为外循环(驱动数据源)和内循环(被驱动数据源),外循环只执行一次(先执行),内循环执行的次数等于外循环执行的数据集个数。

这种连接的好处是内存使用非常少。
如果驱动数据源有限,且被驱动表在连接列上有相应的索引,则这种连接方式才是高效的。
在OLTP系统上常见到这种连接方式。

2. 排序合并连接 (Sort Merge Join)
顾名思义,排序合并就是先分别对待连接的数据集进行排序,然后再合并,其执行过程大致为:对表A的数据集进行排序,排序结果保存的工作区A中;对表B的数据集进行排序,排序结果保存在工作区B中;最后合并工作区A和B中的数据。

对这种连接方法,排序的开销是非常大的,和排序工作区相关的内存参数有:sort_area_size和sort_area_retained_size,都在在PGA中。

3. 哈希连接 (Hash Join)
哈希连接处理的两个数据集分别称为构造输入(build input)和探测输入(probe input),构造输入的每行记录用于构造哈希表,探测输入的每行记录对哈希表进行探测,以找出符合连接条件的记录。
将较小的表作为构造输入,较大的表作为探测输入,这样哈希连接的效率才比较高,在执行计划中,较小的输入表在前面,较大的探测表在后面。
哈希连接只有在相等连接的条件下才能进行。
和哈希表工作区相关的内存参数有:hash_area_size,也在PGA中。

相关文章

  • oracle索引总结

    oracle索引总结

    这篇文章要给大家介绍的是oracle索引,索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息。 感兴趣的小伙伴可参考一下
    2021-09-09
  • oracle 库中有表 但是查询显示表不存在的问题

    oracle 库中有表 但是查询显示表不存在的问题

    这篇文章主要介绍了oracle 库中有表 但是查询显示表不存在,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Oracle批量投入数据方法总结

    Oracle批量投入数据方法总结

    这篇文章主要介绍了Oracle批量投入数据方法总结,文中通过代码示例讲解的非常详细,对大家的学习或工作有的一定的帮助,需要的朋友可以参考下
    2025-01-01
  • 基于ORA-12170 TNS 连接超时解决办法详解

    基于ORA-12170 TNS 连接超时解决办法详解

    本篇文章是对ORA-12170 TNS 连接超时的解决办法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Oracle管道函数pipelined function的用法小结

    Oracle管道函数pipelined function的用法小结

    这篇文章主要介绍了Oracle管道函数pipelined function的用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Oracle中dblink的实际应用示例详解

    Oracle中dblink的实际应用示例详解

    DBLink的作用是在局域网内,通过一台服务器上面的数据库访问另外一台服务器上面数据库的功能。下面这篇文章主要给大家介绍了关于Oracle中dblink实际应用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-09-09
  • Oracle提高空间使用率的方法小结

    Oracle提高空间使用率的方法小结

    这篇文章给大家详细介绍了Oracle 如何提高空间使用率,文中给大家总结了八种提高Oracle空间使用率的方法,并通过图文讲解的非常详细,需要的朋友可以参考下
    2024-02-02
  • Oracle Index索引无效的原因与解决方法

    Oracle Index索引无效的原因与解决方法

    这篇文章主要给大家介绍了关于Oracle Index索引无效的原因与解决方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • oracle数据库sql的优化总结

    oracle数据库sql的优化总结

    自己对oracle sql的一些优化总结,特分享下,方便需要的朋友
    2013-08-08
  • MySQL实现按分秒统计数据量方式

    MySQL实现按分秒统计数据量方式

    在MySQL中,通过使用GROUP BY结合时间处理函数,可以有效统计每秒、每分钟、每5分钟、每10分钟和每30分钟的交易量,通过对transaction_time字段进行格式化和分段,可以灵活调整统计的时间间隔,此方法适用于需要精确时间段统计的场景,如性能监控、数据分析等
    2024-10-10

最新评论