zoukankan      html  css  js  c++  java
  • oracle三种表连接方式

    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做大数据集连接时的常用方式。

  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/javaGoGo/p/10460231.html
Copyright © 2011-2022 走看看