SSIS 資料流程提供三種合併資料的元件,功能相似但適用場景截然不同。本文以實際資料集示範三者設定差異,並解析 Sort 元件同步/非同步 對效能的影響。
DEMO_MG_CustomerCREATE TABLE DEMO_MG_Customer (
CustomerID INT PRIMARY KEY,
CustomerCompany NVARCHAR(255),
CustomerName NVARCHAR(20),
CustomerAddress NVARCHAR(255)
);
INSERT INTO DEMO_MG_Customer VALUES
(1,'HFBZG','Allen,Michael','Obere Str. 0123'),
(2,'MLTDN','Hassall, Mark','Avda. de la Constitución 5678'),
(3,'KBUDE','Peoples, John','Mataderos 1000');
Customer.txtID,Company,CustomerName,Title,Address
1,'NRZBB','Allen,Michael','Sales Representative','Obere Str. 0123'
2,'MLTDN','Hassall, Mark','Owner','Avda. de la Constitución 5678'
3,'KBUDE','Peoples, John','Owner','Mataderos 7890'
4,'HFBZG','Arndt, Torsten','Sales Representative','7890 Hanover Sq.'
5,'HGVLZ','Higginbotham, Tom','Order Administrator','Berguvsvgen 5678'
| 元件 | 輸入數 | 前置條件 | 輸出特性 | 典型用途 |
|---|---|---|---|---|
| Merge | 2 | 1. 中繼資料完全相同 (欄位名、型別、長度) 2. **兩路輸入皆已排序** (需設定 SortKeyPosition) | 保留排序順序,不去重 | 合併兩個已排序的同結構來源 (如多月份分區表) |
| Merge Join | 2 | 1. 兩路輸入皆已排序 2. 指定 Join Key (支援 Inner/Left/Full Outer) | 依 Join Key 關聯,可選輸出欄位 | 關聯兩個已排序來源 (如主檔+明細檔) |
| Union All | 2~n | 無排序要求,僅需中繼資料相容 | 單純堆疊,不排序、不去重 | 快速合併多個同結構來源 (如每日匯入檔) |
CustomerID 遞增排序,並將 SortKeyPosition 設為 1。
BLOBTempStoragePath),嚴重拖慢效能。ORDER BY,並設定輸出資料行 IsSorted=TRUE、SortKeyPosition,省略 Sort 元件。DefaultBufferMaxRows、DefaultBufferSize 並指定高速磁碟給 BLOBTempStoragePath。