Sql-Server

SSIS OLE DB 原始碼編輯器數據訪問模式:“SQL 命令”與“表或視圖”

  • September 3, 2019

在 BIDS 中,我正在執行數據流任務,我想知道在 OLE DB 源的數據訪問模式中使用“表或視圖”與“SQL 命令”之間的幕后區別是什麼。例如,假設我有一個名為 mytable 的表,它有 5 列(column1、column2、column3、column4、column5),但我只對column1 感興趣。我看到這兩個選項:

  1. 我可以使用“表格或視圖”並選擇“mytable”,然後只從“列”窗格中檢查“第 1 列”。
  2. 或者我可以使用“SQL 命令”並使用此查詢“從 mytable 中選擇 column1”。

當我執行測試時,第二個選項似乎執行得更快,但我想確認當我使用“表格或視圖”然後只選擇某些列時幕後發生的事情。我很感激任何人可以提供的任何見解。

(在我的特定案例中,mytable 是一個異地 Azure 數據庫表,column2 中包含大量 xml。我的猜測是,當我使用“表或視圖”時,所有列都通過網路傳輸)

我會做一個小實驗。在以下兩種情況下,我將使用SQL 探查器查看後台發生OLEDB Source的情況:

我有一個名為的表dbo.Table_1,其中包含 3 列(ID、名稱、部門)

我使用 SQL 探查器調整包含此表的數據庫,並使用 2 訪問模式,結果如下:

表或視圖 - 僅選擇 ID 列

profiler 顯示執行了以下命令

SELECT * FROM [dbo].[Table_1]

即使您只選擇一列,OLEDB 源也會讀取所有數​​據,然後在讀取所有數​​據後過濾列。

在此處輸入圖像描述

SQL 命令

profiler 顯示執行了以下命令

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

在此處輸入圖像描述


最近我發表了一篇文章,其中包含更多詳細資訊,您可以在以下連結中查看:

引用自:https://dba.stackexchange.com/questions/176930