我有一个SSIS作业,它从excel文件获取数据并更新数据库表SampleTable“。
例如,考虑一下,我正在更新“SampleTable”表中的以下字段:
只有当任一字段(即field1和field2)的值发生任何变化时,才需要更改字段(LastUpdated)
更新逻辑写在脚本组件中。
从数据库中获取记录值并将其与excel中的值进行比较将是一个巨大的性能损失。
因此,我正在寻找一个性能友好的解决方案,以便只有一次我将从数据库表中获取数据(在脚本执行之前)并暂时将其存储在某处。
答案 0 :(得分:0)
有一个选项可以将重定向更新到staging / temp表,并且只将新记录插入到原始表中。然后使用SP / Task在原始表和登台表之间同步记录。它只是隔离更新和插入操作。但是你会看到性能上的提升。
您可以通过查找转换实现相同功能,以便您可以利用缓存连接管理器的功能。
This article将提供有关如何使用Lookup转换进行更新/插入以及this关于MSDN缓存连接管理器的指南。
Using the cache connection manager
Checking if a row exists and if it does, has it changed?
还要了解this article的性能最佳做法。