BIDSでデータフロータスクを実行しています。OLE DBのデータアクセスモードで「テーブルまたはビュー」と「SQLコマンド」を使用する場合の違いは何ですか。ソース。たとえば、5つの列(column1、column2、column3、column4、column5)を持つmytableというテーブルがあるが、私はcolumn1だけに関心があるとします。次の2つのオプションが表示されます。
テストを実行すると、2番目のオプションの方がはるかに高速に実行されたように見えますが、「テーブルまたはビュー」を使用して特定の列のみを選択した場合の舞台裏の状況を確認したいのですが。だれでも提供できる洞察をいただければ幸いです。
(私の特定のユースケースでは、mytableはオフサイトのAzureデータベーステーブルであり、column2には大量のxmlが含まれています。おそらく、「テーブルまたはビュー」を使用すると、すべての列がネットワーク経由で送信されていたと思います)
小さな実験をします。 SQLプロファイラーを使用して、2つの場合にOLEDB Source
を使用しながら、バックグラウンドで何が行われているかを確認します。
3つの列(ID、名前、部門)を含むdbo.Table_1
という名前のテーブルがあります。
SQLプロファイラーを使用してこのテーブルを含むデータベースを調整し、結果の下に2つのアクセスモードを使用しました。
テーブルまたはビュー-ID列のみを選択
プロファイラーは、次のコマンドが実行されたことを示します
SELECT * FROM [dbo].[Table_1]
列を1つだけ選択した場合でも、OLEDBソースはすべてのデータを読み取り、すべてを読み取った後に列をフィルタリングします。
SQLコマンド
プロファイラーは、次のコマンドが実行されたことを示します
SELECT [ID] FROM [dbo].[Table_1]
最近、詳細を含む記事を公開しました。次のリンクで確認できます。