【发布时间】:2014-01-15 11:53:44
【问题描述】:
我读到 Oracle 支持带有不等式连接谓词的合并连接。 是否有在线参考用于实现这种连接的算法? 如果有人知道该怎么做,你能回答吗?
【问题讨论】:
-
这和相等连接有什么不同吗?
-
@Prafulla:如果您的问题没有得到解答,您应该考虑将其标记为迁移到(姊妹站点):dba.stackexchange.com
我读到 Oracle 支持带有不等式连接谓词的合并连接。 是否有在线参考用于实现这种连接的算法? 如果有人知道该怎么做,你能回答吗?
【问题讨论】:
This 是您正在寻找的。
7.4 排序合并连接
排序合并连接可以连接来自两个独立来源的行。在 一般来说,散列连接比排序合并连接执行得更好。然而, 排序合并连接可以比散列连接执行得更好,如果两者 存在以下条件:
行源已排序。不需要排序操作。然而, 如果排序合并连接涉及选择较慢的访问方法( 索引扫描而不是全表扫描),那么使用的好处 排序合并可能会丢失。
排序合并连接在两个表之间的连接条件时很有用 是不等式条件,例如 或 >=。排序合并连接 对大型数据集执行比嵌套循环连接更好。哈希连接 需要一个相等条件。
在合并连接中,没有驱动表的概念。加入 包括两个步骤:
排序加入操作
两个输入都按连接键排序。
合并加入操作
排序后的列表被合并。
如果输入按连接列排序,则进行排序连接操作 不针对该行源执行。但是,排序合并连接 总是为右侧创建一个可定位的排序缓冲区 加入,以便它可以在以下情况下查找最后一场比赛 重复的连接键值来自连接的左侧。
【讨论】:
这里有一个例子:http://www.serkey.com/oracle-skyline-query-challenge-bdh859.html
这是您想要做的吗? (关键词是“软合并”)
【讨论】: