【问题标题】:Why Merger Join need sorted Input in SSIS为什么 Merger Join 需要在 SSIS 中排序输入
【发布时间】:2017-01-24 06:22:25
【问题描述】:

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

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

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

谢谢,

Praveenkumar.K

【问题讨论】:

    标签: sql-server ssis


    【解决方案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

    【讨论】:

    • 谢谢Thangadurai.B,很好的解释。非常有帮助。
    • 欢迎兄弟@PraveenKumar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多