当前位置:  数据库>oracle

多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP

    来源: 互联网  发布时间:2017-05-04

    本文导语: 在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式。 之前打算在sqlplus中用执行计划的,但是格式看起来有点乱,就用Toad 做了3个截图。                     从3张图里我们看到了几...

在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式。 之前打算在sqlplus中用执行计划的,但是格式看起来有点乱,就用Toad 做了3个截图。

   

 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP[图片]

 

多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP[图片]

 

 

 

 

多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP[图片]

 

 

从3张图里我们看到了几点信息:

1.       CBO 使用的ALL_ROWS模式 

2.       表之间的连接用了hash Join, Nested loops,Sort Merge Join 

 

多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join. 下面来介绍三种不同连接的不同:

 

 

一. NESTED LOOP:

对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1 万不适合),要把返回子集较小表的作为外表(CBO 默认外表是驱动表),而且在内表的连接字段上一定要有索引。当然也可以用ORDERED 提示来改变CBO默认的驱动表,使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接。

        

Nested loop一般用在连接的表中有索引,并且索引选择性较好的时候.

 

步骤:确定一个驱动表(outer table),另一个表为inner table,驱动表中的每一行与inner表中的相应记录JOIN。类似一个嵌套的循环。适用于驱动表的记录集比较小(


    
 
 

您可能感兴趣的文章:

  • [请教]如何join命令将两个文件连接(当进行连接判断的字段是数值类型)
  • Python 连接字符串(join %)
  • SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍
  • join命令连接2个文件的多个域
  • SQL自连接(self join)实例学习
  • MSSQL内外连接(INNER JOIN)语句详解
  • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • 深入JDBC sqlserver连接写法的详解
  • 解决plsql连接失败,弹出空白提示框的方法详解
  • 基于ORA-12170 TNS 连接超时解决办法详解
  • Oracle 表连接方式(内连接/外连接/自连接) 详解
  • c++实现strcat字符串连接库函数的方法详解
  • 深入数据库通用的连接方式详解
  • 详解远程连接Mysql数据库的问题(ERROR 2003 (HY000))
  • 远程连接mysql 授权方法详解
  • 解析为何要关闭数据库连接,可不可以不关闭的问题详解
  • MySQL笔记之连接查询详解
  • 详解如何在Oracle中连接输出结果
  • 深入分析C#连接Oracle数据库的连接字符串详解
  • python使用mysqldb连接数据库操作方法示例详解
  • ECMall支持SSL连接邮件服务器的配置方法详解
  • cmd连接mysql的方法详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 请教:vm的3种连接方式。相对那3种实际网络连接方式
  • 听说java有一种数据库连接池的方式,效率比使用jdbc驱动程序高。不知是否真的这样?具体方式怎么实现?
  • 在linux下可以使用dao方式连接数据库吗?可以连接musql吗?回答就给分!急
  • linux的KVM如何设置网络连接方式?
  • 有关数据库连接两种方式的比较??(高分求解)
  • 请教高手,通过ssh连接suse linux的三种方式是否可以修改?
  • 请教一个有关JDBC连接方式的问题
  • asp.net 在webcofig中连接数据库二种方式
  • 大家谈一下,jsp哪种连接数据库的方式,效率会高一些?能有些代码就更好了,我要用,谢谢
  • 哪位给看一下 为什么连接失败 errno=111 connect 调用失败(这是客户端已tcp方式连接)
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序 iis7站长之家
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序
  • 静态方式调用so,连接时,从哪取的符号? (windows上.dll可以有对应的导出库.lib)
  • java中建立oracle连接的问题(oci和thin方式的区别、优劣?)
  • 如何提交下拉框控件的值到jsp页面,我用的是连接传递参数的方式,而不是表单提交,大家快帮忙。
  • Debian6在VMWare7上用Host-only方式连接网络,无法设置设置静态IP
  • JDBC 以thin方式连接Oracle时总报错
  • 数据库连接方式汇总(sql与oracle等)
  • Oracle 表三种连接方式使用介绍(sql优化)
  • 请问非阻塞方式下connect连接成功的判断?
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 什么是socket的长连接,以及如何实现长连接,长连接和短连接有什么区别?
  • 如何在windows上远程连接centOS桌面
  • 建立长连接的SOCET通讯后,如何检查长连接的有效性,如何获知连接状态
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 关于inetd。我做了一个测试程序,想计算ftp最多能有多少了连接,我发现当连接到1020次就不可以连接了,哪位大侠知道如何做才能将连接数量增加至10000呢??
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • 哪位给解释一下长连接和短连接的区别?
  • ssh连接得通虚拟机,连接不通隔壁宿舍?
  • windows server2012无法连接无线网络解决方法(windows无线连接)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,