web-dev-qa-db-ja.com

SSIS OLE DBソースエディタのデータアクセスモード: "SQLコマンド"と "テーブルまたはビュー"

BIDSでデータフロータスクを実行しています。OLE DBのデータアクセスモードで「テーブルまたはビュー」と「SQLコマンド」を使用する場合の違いは何ですか。ソース。たとえば、5つの列(column1、column2、column3、column4、column5)を持つmytableというテーブルがあるが、私はcolumn1だけに関心があるとします。次の2つのオプションが表示されます。

  1. 「テーブルまたはビュー」を使用して「mytable」を選択し、「列」ペインから「列1」のみをチェックできます。
  2. または、「SQLコマンド」を使用して、このクエリ「select column1 from mytable」を使用できます。

テストを実行すると、2番目のオプションの方がはるかに高速に実行されたように見えますが、「テーブルまたはビュー」を使用して特定の列のみを選択した場合の舞台裏の状況を確認したいのですが。だれでも提供できる洞察をいただければ幸いです。

(私の特定のユースケースでは、mytableはオフサイトのAzureデータベーステーブルであり、column2には大量のxmlが含まれています。おそらく、「テーブルまたはビュー」を使用すると、すべての列がネットワーク経由で送信されていたと思います)

7
jessieloo

小さな実験をします。 SQLプロファイラーを使用して、2つの場合にOLEDB Sourceを使用しながら、バックグラウンドで何が行われているかを確認します。

3つの列(ID、名前、部門)を含むdbo.Table_1という名前のテーブルがあります。

SQLプロファイラーを使用してこのテーブルを含むデータベースを調整し、結果の下に2つのアクセスモードを使用しました。

テーブルまたはビュー-ID列のみを選択

プロファイラーは、次のコマンドが実行されたことを示します

SELECT * FROM [dbo].[Table_1]

列を1つだけ選択した場合でも、OLEDBソースはすべてのデータを読み取り、すべてを読み取った後に列をフィルタリングします。

enter image description here

SQLコマンド

プロファイラーは、次のコマンドが実行されたことを示します

SELECT [ID] FROM [dbo].[Table_1]

enter image description here


最近、詳細を含む記事を公開しました。次のリンクで確認できます。

7
Hadi