在SSIS中,我们有合并连接,它总是强制给用户以获取已排序的输入。
但是在SQL服务器中我们有合并,它不需要任何排序。
请向我解释为什么合并需要排序输入。
谢谢,
Praveenkumar.K
答案 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