我正在为数据仓库提供SSIS解决方案,用于提取相应应用程序密钥的代理键,我正在使用SSIS的查找任务,但此任务的问题是它在其内存中缓存完整的查找表。我的查表表大小很大,即2000万条记录。所以,如果你可以提出一些方法或替代方案来查找任务
答案 0 :(得分:1)
我不认为一张有2000万条记录的桌子太大而无法查找。您可以进行一些过滤,只选择查找中所需的列,您可以优化它以使用少量内存。
例如,如果你有一个类型为int的键列和一个需要查找的大小为10的varchar列,则记录将需要4 + 10bytes,而2000万则需要20Mx(4 + 10)〜= 280MB,这是不能考虑的太高了。
如果你想减少内存使用量,你将不得不使用连接。
答案 1 :(得分:0)
当您将数据放入SSIS包并随后评估您需要的内容时,请使用您的查找数据进行LEFT JOIN。
如果查找表位于不同的源中,那么您可以在SSIS中执行LEFT JOIN,但这也会缓存行。我认为JOIN可能比查找快一点。
答案 2 :(得分:0)
你需要扫描整个桌子吗?即您可以在表上将查找指定为数据库视图,甚至可以将其指定为SQL查询的结果(使用SQL查询选项的结果)
答案 3 :(得分:0)
确保在查找表中仅选择所需的列,不要缓存不需要的列。花一些时间来查看 MS "Project "Real" ,它在高数据量应用程序中使用SSIS并讨论最佳实践。