嵌套连接:
 对于外部表中的每一行,内部表中的每一行都将被获取并进行比较。
 a:外部表 b:内部表
 for i=a 的第一行 to a的末行
    for ii=b 的第一行 to b的末行
       if i的连接列=ii的连接列 then  找出来放到结果集
    next ii 
 next i

解决方案 »

  1.   

    谢谢,明白。下面二个哪位兄台再解释一下??2。合并连接。3。HASH连接
      

  2.   

    合并联接要求两个输入都在合并列上排序,而合并列由联接谓词的等效 (WHERE) 子句定义。查询优化器一般扫描索引(如果在适当的一组列上存在一个索引),或在合并联接的下面放一个排序运算符。在很少的情况下,虽然可能有多个等效子句,但只用其中一些可用的等效子句获得合并列。由于每个输入都已排序,Merge Join 运算符将获取每个输入中的行并将其进行比较。例如,对于内联接操作,如果行相等则返回。如果行不相等,则废弃值较小的行并从该输入中获得另一行。这一过程将重复进行,直到处理完所有的行为止。合并联接操作可以是常规操作,也可以是多对多操作。多对多合并联接使用临时表存储行。如果每个输入中有重复值,则在处理其中一个输入中的每个重复项时,另一个输入必须重绕到重复项的开始位置。如果存在驻留谓词,所有满足合并谓词的行都将对该驻留谓词取值,然后只返回那些满足该驻留谓词的行。合并联接本身的速度很快,但如果需要排序操作,选择合并联接就会非常费时。然而,如果数据量很大且能够从现有 B 树索引中获得预排序的所需数据,则合并联接通常是最快的可用联接算法。
      

  3.   

    哈希联接有两种输入:生成输入和探测输入。查询优化器指派这些角色,使两个输入中较小的那个作为生成输入。哈希联接可用于许多类型的集合匹配操作:内联接,左向外联接、右向外联接和完整外联接,左向半联接和右向半联接、交集、联合和差分。而且,哈希联接的变化形式能够进行重复项删除和分组操作(如 SUM(salary) GROUP BY department)。这些修改对生成和探测角色只使用一个输入。与合并联接相似,只有当联接谓词中至少有一个等效 (WHERE) 子句时才能使用哈希联接。然而,联接一般用于重组合由主键和外键之间的等效谓词表达的关系,因此大多数联接至少有一个等效子句。用等效谓词表达的列集合称为哈希键,因为这些列有助于哈希函数。还可以有附加的谓词,并且可以将这些谓词取值为驻留谓词以与哈希值比较分开。哈希键可以是表达式,只要能从单个行中的列对其进行排它计算。在分组操作中,按列表分组的列是哈希键。在交集等集合操作中以及删除复制项时,哈希键由所有列组成。