2017-10-18 13 views
-1

(SSIS)3200万レコードのターゲットテーブルを持っています。私は3200万レコードに新たに来たものと比較したいと思います。更新されたか変更されたレコードおよび古いレコード).i新しいレコード、更新または変更されたレコードを比較して挿入し、古いレコードを削除したい。 私はルックアップに時間がかかっていました。時間を比較してパフォーマンスの問題を解決するのを手伝ってください。2つの膨大な量のデータテーブルを比較する

+0

これはSSISとは関係ありません。結合を実行するか、32Mレコードを持ち込まない*。ソースデータベースで変更トラッキングを有効にし、変更された行のみを持ち込みます。変更トラッキングがなければ、比較には時間がかかります。たとえインデックスであっても、32M行と32M行を比較しています。 –

+0

それとは別に、あなたは推測できるだけの情報を提供しません。ソースデータに「変更された」列があるかどうかこれを使用して、最後にインポートした後に変更された行のみを読み取ることができます。プライマリキーは増分ですか?これを使用して、最後にインポートした後に作成された*キー*のみを読み込むことができます。いずれのオプションも使用して、32Mレコードの読み込みを避けることができます。 –

+0

別のオプションは、バッチで更新を実行することです。これにより、tempdbのフラッディングやトランザクションログの埋込みが回避されます。 –

答えて

0

これらのレコードが変更されたかどうかを確認するたびに、3200万件の受信レコードすべてを調べる必要がある場合は、既存レコードのすべてを新しいレコードに置き換えるだけです。

すべての3200万レコードをステージングテーブルにインポートし、ステージングテーブルを新しい固定テーブルにするためにスイッチまたは名前を変更します。

関連する問題