1

あるデータベースから別のデータベースに毎日約 1,100 万行を転送する必要があります。ソース テーブルは、この時点で合計約 5 億行です。

私は「それ以来すべてを取得しますか?」を使用していました。宛先の最大値を ? として使用する方法ですが、ソースのメンテナンスは一種のファンキーです。彼らは穴を埋めるために戻ってき続け、私の方法は機能していません.

標準の Lookup 変​​換の実行には数時間かかります。Pragmatic の TaskFactory には Upsert コンポーネントがありますが、このプロジェクトの予算にはありません。

ルックアップよりルックアップする良い方法はありますか?

4

2 に答える 2

1

私は可能な限りフル リフレッシュを拡張することを好みます。たとえば、ターゲット テーブルを切り詰めて、ルックアップを行わずにすべての行を配信するなどです。私は、3 時間で 10 億行近くを処理するこのようなものを持っています。ほとんどの人は、最初はこのアプローチにぞっとしますが、うまく機能し、非常に信頼性が高く、コーディングとテストが簡単です。

または、SQL MERGE ステートメントで Execute SQL Task を使用します。これにより、考慮されるソース行とターゲット行、それらがどのように一致するか、およびその後に何が起こるか (挿入または更新) を非常に詳細に制御できます。

その規模では、結合された列などでMERGEを支援するためにインデックスを作成するように注意します。多くの場合、完全な更新設計よりもはるかに遅くなり、コーディングとテストにはるかに時間がかかり、バグのリスクが高くなります。

于 2014-04-30T00:17:18.220 に答える