SSIS OLE DB 源编辑器数据访问模式:“SQL 命令”与“表或视图”

jes*_*loo 7 sql-server-2008 sql-server ssis azure-sql-database ssis-2008

在 BIDS 中,我正在运行数据流任务,我想知道对 OLE DB 源的数据访问模式使用“表或视图”与“SQL 命令”之间的幕后区别是什么。例如,假设我有一个名为 mytable 的表,它有 5 列(column1、column2、column3、column4、column5),但我只对 column1 感兴趣。我看到这两个选项:

  1. 我可以使用“表或视图”并选择“mytable”,然后只从“列”窗格中选中“第 1 列”。
  2. 或者我可以使用“SQL 命令”并使用此查询“从 mytable 中选择 column1”。

当我进行测试时,第二个选项似乎运行得更快,但是当我使用“表或视图”然后只选择某些列时,我想确认幕后发生了什么。我很感激任何人都可以提供的任何见解。

(在我的特定用例中,mytable 是一个异地 Azure 数据库表,column2 中包含大量 xml。我的猜测是,当我使用“表或视图”时,所有列都通过网络传输)

Had*_*adi 7

我会做一个小实验。我将使用SQL 探查器来查看OLEDB Source在两种情况下使用 an时后台发生了什么:

我有一个名为的表dbo.Table_1,其中包含 3 列(ID、名称、部门)

我使用 SQL 探查器来调整包含此表的数据库,并使用 2 访问模式,在结果下方:

表或视图 - 仅选择 ID 列

探查器显示执行了以下命令

SELECT * FROM [dbo].[Table_1]
Run Code Online (Sandbox Code Playgroud)

即使您只选择一列,OLEDB 源也会读取所有数据,然后在读取所有数据后过滤列。

在此处输入图片说明

SQL 命令

探查器显示执行了以下命令

SELECT [ID] FROM [dbo].[Table_1]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


最近我发表了一篇文章,其中包含更多详细信息,您可以在以下链接中查看: