SSIS:Merge vs Union All

Oma*_*aer 5 merge ssis union-all

免责声明:我正在学习SSIS - 如果这是一个明显的答案,请原谅我,但我找不到任何关于搜索的内容.

似乎Merge转换与Union All转换非常相似,但有以下不同之处:

  1. 合并只能合并2个数据源,而Union All支持更多(我不知道有多少 - 我的导师说256但是没有消息来确认 - 而且MSDN没有提到上限).
  2. 合并需要对输入进行排序,而Union All则不需要.

除了这些差异之外,似乎没有太多不同之处.它们都是部分阻挡,从我的有限测试中,我也看不出任何明显的性能差异.

在我搜索的任何地方,我发现建议尽可能使用"合并",如果有超过2个数据源,或者源数据未排序,则使用"全部联盟".

我的问题是,为什么?为什么我不会到处使用Union All?合并有什么意义?

再一次,如果这是一个非常基本/新手的问题,我很抱歉,但我的导师不知道答案,搜索也不是很有成效.

谢谢!

注意: 似乎(从其他一些SO答案中,人们正在混淆"Merge"和"Merge Join".这是两个不同的事情.

Oma*_*aer 12

好的,所以事后回答很明显.似乎关键的区别在于输出.

  • 合并:输出已排序
  • 全部联盟:输出未排序

我们的想法是,如果我们对输入数据进行了排序,那么为什么不在我们的"Merge"/"Union All"之后对其进行排序?谁知道,我们可能需要将排序数据作为另一个转换中的输入,所以如果可能的话,只需使用"Merge"以便数据保持排序.

有趣的是,互联网上的很多文章都没有提到这个简单的区别.希望这有助于另一位新手上SSIS掌握!