使用筛选的引用表查找SSIS

使用筛选的引用表查找SSIS,ssis,performance,filtered-lookup,Ssis,Performance,Filtered Lookup,我正在尝试提高SSIS包的性能 我开始做的一件事是过滤查询的参考表。直到现在,我一直在使用一个表作为该查找的参考表 第一个改进是将表更改为一个SQL子句,该子句仅从该表中选择所需的列 接下来,我想在这个表中加载我知道肯定会使用的记录。如果我将它保持在这种状态,我将加载30000行或更多行(每个行的二进制内容大约为500KB),并使用大约100行 我会在设置查找引用表的SQL查询中放置一些过滤器,但是,在该过滤器中,我需要使用OLEDB源中加载的行的所有ID 有没有办法做到这一点 我曾想过使用Ol

我正在尝试提高SSIS包的性能

我开始做的一件事是过滤查询的参考表。直到现在,我一直在使用一个表作为该查找的参考表

第一个改进是将表更改为一个SQL子句,该子句仅从该表中选择所需的列

接下来,我想在这个表中加载我知道肯定会使用的记录。如果我将它保持在这种状态,我将加载30000行或更多行(每个行的二进制内容大约为500KB),并使用大约100行

我会在设置查找引用表的SQL查询中放置一些过滤器,但是,在该过滤器中,我需要使用OLEDB源中加载的行的所有ID

有没有办法做到这一点

我曾想过使用OleDB命令而不是查找一次加载每一行,但除了非常耗时外,我可能会为100个不同的行加载相同的内容100次,而我只需在查找中加载一次并使用它100次

启用缓存仍然是另一个听起来不太好的选项,因为它会使我们的速度变慢——我们已经非常慢了


任何想法都非常受欢迎。

一种可能性是首先将不同的ID流式传输到一个数据流中的永久/临时表,然后在以后的数据流中使用它进行查找(带有连接)(您可能必须推迟验证)


在我们的许多ETL包中,我们首先将数据流化到一个原始文件中,处理所有的类型转换和所有的过程。然后,当所有这些转换成功后,我们开始创建新的维度,然后将事实链接到维度。

好的,凯德,谢谢你的建议,我认为这可能会很好。您认为缓存选项怎么样?你用过这个吗?戴安娜:我们只在生产中使用2005,我们也有区分大小写的问题,所以我们只在完全预加载模式下使用它们。我不记得那叫什么了——UI中的术语对实际行为有误导性。我想我关于原始文件的观点是,为了获得想要的性能,您经常需要对流程进行大量开箱即用的思考。在我们的例子中,执行一次转换并保存结果要比执行转换以检查数据是否正确,然后在加载时再次执行转换快得多。@Diana即使我们将多GB原始文件流式输出,然后再次读取它们-总体而言,这比仅再次读取并再次转换要快得多。