0

現在、報告のために財務取引を予算データベースに取り込む必要があります。現在、すべての財務記録を取得し (低速クエリ)、次にすべての予算を取得しています。次に、マージ結合を実行して、予算のあるものだけに財務記録を絞り込みます。これを行う理想的な方法は、最初にすべての予算を取得し、それを別のコンポーネントにフィードして、必要なトランザクションのみを取得するクエリを生成することです。

例:

TableAin にDatabaseAは、 という ID 列がありますFakeId

TableBinDatabaseBには同じ ID 列があります。ただし、TableBへの 1 対 1 のマッピングはありませんTableA。代わりに、「マッピング」(存在する場合) は 1 対 0 または 1 になります。のすべての財務記録を から取得したいとTableA考えてDatabaseAFakeIdます。TableBDatabaseB

これら 2 つの SQL サーバー間にリンク サーバーを作成することはできないため、これを行うことSELECT * FROM TableA WHERE FakeId IN (SELECT FakeId FROM DatabaseB.TableB)はできません。

ありがとう、ポール

4

2 に答える 2

2

おっしゃる通り、2 つのソースを使用して、マージ結合変換を使用してそれらを結合できます。

別の (よりデータ ウェアハウス指向の) ソリューションは、両方のテーブルを別のデータベース (ステージング領域と呼ばれることが多い) にコピーし、提案したクエリのバリエーションを使用して、データベース レベルでロジックを実行することです。このソリューションでは、インデックスやその他のパフォーマンス向上手法を実装して、統合を最適化することもできます。

于 2012-10-24T09:13:15.437 に答える
1

SSIS を使用できる場合は、「Lookup」コンポーネントを使用できると思います。

SQL Server Integration Services でのルックアップ ロジックの実装 http://www.simple-talk.com/sql/ssis/implementing-lookup-logic-in-sql-server-integration-services/

于 2012-10-24T05:58:07.540 に答える