Sql-Server
SSIS OLE DB 原始碼編輯器數據訪問模式:“SQL 命令”與“表或視圖”
在 BIDS 中,我正在執行數據流任務,我想知道在 OLE DB 源的數據訪問模式中使用“表或視圖”與“SQL 命令”之間的幕后區別是什麼。例如,假設我有一個名為 mytable 的表,它有 5 列(column1、column2、column3、column4、column5),但我只對column1 感興趣。我看到這兩個選項:
- 我可以使用“表格或視圖”並選擇“mytable”,然後只從“列”窗格中檢查“第 1 列”。
- 或者我可以使用“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]
最近我發表了一篇文章,其中包含更多詳細資訊,您可以在以下連結中查看: