これらの一連の作業を行った後、よりパフォーマンスの高い、より複雑なパターンに移行しました。他の人は別の方法で行うかもしれませんが、これは私にとってはうまくいきます。
まず、マージ結合の代わりにルックアップ変換を使用します。フル キャッシュ (既定) に設定されている参照変換は、データ フローが実行される前にデータを完全に読み込みます。これにより、挿入が識別され、迅速に更新されます。挿入はこのデータ フローから直接実行できますが、更新については...
データ フローの一部として更新を行う唯一の現実的な方法は、OLEDB コマンド変換を使用することです。これらは非常に遅いことで知られています。代わりに、すべてのデータ更新をデータ フローの一時キャッシュ テーブルに書き込み、その後、対象テーブルのレコードをキャッシュ テーブルから更新する SQL 実行項目を制御フローに追加します。
Execute SQL 項目でキャッシュ テーブルを切り捨てることを忘れないでください。
最後に、ターゲット テーブルからの選択とソース テーブルに対するルックアップ変換を使用して、データ フローで削除を識別します。再度、キャッシュ テーブルに書き込み、バッチ SQL 実行コマンドですべて削除します。
これで、私の制御フローには、キャッシュ テーブルを切り捨てるための Execute SQL、挿入と更新をキャッシュするためのデータ フロー、更新を実行するための Execute SQL、削除をキャッシュするためのデータ フロー、および削除を実行するための Execute SQL が含まれるようになりました。パッケージが複数のソース テーブルで機能する場合は、通常、各ターゲット テーブルのすべての制御フロー項目をシーケンス コンテナーに入れます。必須ではありませんが、論理構造を理解するのに役立ちます。