我在SSIS 2008中有一个数据流任务,它使用OLE DB源提取大约2,000,000行,然后逐个进行24次查找转换,将“代码”数据替换为维度表中的预定义等效数据,或“未知”值。
这个逐个过程,整个流程贯穿每个转换已成为程序包执行的主要瓶颈,我需要一种方法来加快这个过程。有什么想法吗?
我试图将数据集多播到24个不同的查找中(因此只发送必要的列)但是当我将它们全部运行到一个联合中时,所有任务似乎都不喜欢各种无论我如何配置它,数据类型都会抛出错误。我还缺少另一种选择吗?
答案 0 :(得分:2)
我会在纯TSQL中完成所有操作:将200万行插入到临时表中,并使用UPDATE语句设置所需的值。这几乎肯定会比逐行查找过程快得多,如果需要,您还可以在登台表上放置索引。
更新数据后,您可以将其推送到另一个数据流中的目标表,或者,如果登台表和目标表位于同一服务器上,只需使用INSERT ... SELECT ...
即可。
就个人而言,如果在TSQL中有一个简单的方法,我总是避免SSIS转换;性能更好,我发现TSQL代码比SSIS包更容易维护。话虽如此,SSIS是一个很好的控制流工具,用于从不同的地方获取数据,将其交付到临时数据库,您可以在其中处理数据并执行程序或脚本来转换数据。
答案 1 :(得分:0)