【发布时间】:2017-01-24 06:22:25
【问题描述】:
在 SSIS 中,我们有合并连接,它始终强制用户获取已排序的输入。
但是在 SQL Server 中我们有合并,它不需要任何排序。
请向我解释为什么合并需要排序输入。
谢谢,
Praveenkumar.K
【问题讨论】:
标签: sql-server ssis
在 SSIS 中,我们有合并连接,它始终强制用户获取已排序的输入。
但是在 SQL Server 中我们有合并,它不需要任何排序。
请向我解释为什么合并需要排序输入。
谢谢,
Praveenkumar.K
【问题讨论】:
标签: sql-server ssis
合并连接的工作原理是一次同时读取和比较两个已排序的输入,一次一行。在每一步,我们都会比较每个输入的下一行。如果行相等,我们输出一个连接的行并继续。如果行不相等,我们丢弃两个输入中较小的一个并继续。由于输入已排序,我们知道我们正在丢弃小于任一输入中任何剩余行的行,因此永远无法加入。
我们可以将算法用伪代码表示为:
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
【讨论】: