为什么合并加入需要在SSIS中排序输入

时间:2017-01-24 06:22:25

标签: sql-server ssis

在SSIS中,我们有合并连接,它总是强制给用户以获取已排序的输入。

但是在SQL服务器中我们有合并,它不需要任何排序。

请向我解释为什么合并需要排序输入。

谢谢,

Praveenkumar.K

1 个答案:

答案 0 :(得分:1)

合并连接通过同时读取和比较一行一行的两个排序输入来工作。在每一步,我们比较每个输入的下一行。如果行相等,我们输出一个连接的行并继续。如果行不相等,我们丢弃两个输入中较小的一个并继续。由于输入是排序的,我们知道我们丢弃的行少于任一输入中的任何剩余行,因此永远不会加入。

我们可以用伪代码表示算法:

get first row R1 from input 1
get first row R2 from input 2
while not at the end of either input
    begin
        if R1 joins with R2
            begin
                return (R1, R2)
                get next row R2 from input 2
            end
        else if R1 < R2
            get next row R1 from input 1
        else
            get next row R2 from input 2
    end

参考文献: https://msdn.microsoft.com/en-us/library/ms191426(v=sql.100).aspx