0

假设在数据流任务中,我有一个 OLE DB 源。我想提高 SSIS 的性能。我在哪里选择更少的列有关系吗?

  1. 在数据库中创建一个 SELECT 较少列的视图,将其用作源。

  2. 在源中键入 SQL SELECT 以选择更少的列。

  3. 选择表,然后取消选中源内的列。

谢谢

4

2 回答 2

5

在 SSIS 中,您不应该使用Table name or view from a variable 它们,因为它们倾向于提取所有数据。它的行为类似于Select *

The adapter opens a rowset-based on the table or view. Then it calls OpenRowset
in the validation phase to retrieve column metadata, and later in the execution
phase to read out the data.

最好的方法是输入提高性能的 SQL 命令。但是使用 View ,性能提高了很多倍。查看这篇文章在 OLEDB SOURce 中使用 View

于 2012-10-31T08:56:45.440 回答
4

对@praveen 的回答的一个微不足道的澄清。由于打开的行集调用的开销,在下拉列表中选择一个表和编写等效的 SELECT * (即使这样,枚举列)之间存在性能差异,无论多么微小。

也就是说,如果您需要从 SSIS 中获得最佳性能,请尽可能明确。如果您只需要 30 列中的 5 列,请明确选择这些列。SSIS 可能会拉回所有 30 列并在客户端过滤它们。您只是浪费了网络带宽,并且您必须读取聚集索引才能获取可能存在覆盖索引的所有数据。增加读取成本 + 增加网络成本 + 增加 SSIS 将要丢弃的列的内存成本?在任何工作开始之前,您都需要预先支付大量费用。

You cannot get faster throughput than your starting component supplies.

于 2012-10-31T12:41:28.570 回答