zoukankan      html  css  js  c++  java
  • 【Oracle】表连接三种方式

    表连接的方式有三种分别是:排序合并连接(Sort Merge Join)、嵌套循环连接(Nested Loops Join)、哈希连接(Hash Join)。

    1、 排序合并连接(Sort Merge Join)

    排序合并连接的执行过程如下所示:

    * 将每个行源的行按连接谓词列排序

    * 然后合并两个已排序的行源,并返回生成的行源

    例如:

    select * from employees d,departments t where d.department_id=t.department_id;
    访问机制如下:访问departments表并排序department_id列,访问employees表并排序department_id列,然后依次交替比较、归并。

    注意:排序合并连接一般用在两张表中没有索引,并且连接列已经排好序的情况下。


    2、嵌套循环连接(Nested Loops Join)

    * 两个表中的一个被定义为“外部表”(或“驱动表”)

    * 另一个表被称为“内部表”

    * 将针对外部表中的每一行检索内部表中所有匹配的行

    注意:join的顺序很重要,一般选择小表作为“驱动表”,大表作为“内部表”。如两个表,一个100行,一个10000行,理想的连接方式是:100行的小表作为“驱动表”,10000行的大表作为“内部表”,用小表中的每条记录去匹配大表中的记录。如果两张表的连接词在大表中是索引列,则是最完美的。


    3、 哈希连接(Hash Join)

    * 优化器对小表利用连接键在内存中建立hash表

    * 扫描大表,每得到一条记录,就来hash表中“探测”一次,找出与hash表匹配的行

    注意:Hash Join 是CBO做大数据集连接时的常用方式。

  • 相关阅读:
    IOS使用正则表达式去掉html中的标签元素,获得纯文本
    iOS 拨打电话的三种方式总结
    iOS中Block的基础用法
    如何避免在Block里用self造成循环引用
    对MAC自带的SVN进行升级
    IOS开发之记录用户登陆状态
    Xcode7 添加PCH文件
    mysql upgrade
    Ubuntu下更改用户名和主机名
    mysql 查询的时候没有区分大小写的解决方案
  • 原文地址:https://www.cnblogs.com/NextAction/p/7366641.html
Copyright © 2011-2022 走看看