データ フロー タスクで、OLE DB ソースがあるとします。SSIS のパフォーマンスを向上させたいと考えています。少ない列を選択する場所は重要ですか?
少ない列を選択するデータベースにビューを作成し、それをソースとして使用します。
ソース内に SQL SELECT と入力して、選択する列を減らします。
テーブルを選択し、ソース内の列のチェックを外します。
ありがとうございました
データ フロー タスクで、OLE DB ソースがあるとします。SSIS のパフォーマンスを向上させたいと考えています。少ない列を選択する場所は重要ですか?
少ない列を選択するデータベースにビューを作成し、それをソースとして使用します。
ソース内に SQL SELECT と入力して、選択する列を減らします。
テーブルを選択し、ソース内の列のチェックを外します。
ありがとうございました
SSIS では、Table name or view from a variable
すべてのデータをプルする傾向があるため、使用しないでください。 Select *として動作します。
The adapter opens a rowset-based on the table or view. Then it calls OpenRowset
in the validation phase to retrieve column metadata, and later in the execution
phase to read out the data.
最良の方法は、パフォーマンスを向上させる SQL コマンドを入力することです。しかし、 View を使用すると、パフォーマンスが何倍にも向上します。OLEDB SOURCE での View の使用については、この記事を確認してください。
@praveenの回答に関する簡単な説明。ドロップダウン リストでテーブルを選択する場合と同等の SELECT * を記述する場合 (さらに、列を列挙する場合) には、行セット呼び出しのオーバーヘッドが原因でわずかではありますが、パフォーマンスに違いがあります。
とはいえ、SSIS から最高のパフォーマンスを引き出す必要がある場合は、できるだけ明示的に記述してください。30 列のうち 5 列だけが必要な場合は、それらの列を明示的に選択します。SSIS は 30 列すべてをプルバックし、それらをクライアント側でフィルター処理する場合があります。ネットワーク帯域幅を浪費しただけで、クラスタ化されたインデックスを読み取って、カバリング インデックスが存在する可能性のあるすべてのデータを取得する必要がありました。読み取りコストの増加 + ネットワーク コストの増加 + SSIS が破棄しようとしている列のメモリ コストの増加? 仕事を始める前に、かなりの費用を前払いしています。
開始コンポーネントの供給よりも高速なスループットを得ることはできません。