MergeJoin 读取均已按照连接属性进行排序的两个输入。对于左侧输入中的每个行,该算法通过按排序顺序对行进行访问来读取右侧输入中的所有匹配行。
如果输入尚未按连接属性排序(可能是因为先前的合并连接或因为曾使用索引来满足搜索条件),优化程序将添加一个排序,以生成正确的行顺序。这一排序会增加合并连接的开销。
与 HashJoin 相比,MergeJoin 的优点之一是排序开销可以由若干个连接分摊(只要这些合并连接涉及相同的属性)。如果输入的大小可能比较接近或者排序开销可以由若干个操作分摊,优化程序将优先选择 MergeJoin 而不是 HashJoin。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |