我一直在想,这两种情况之间的复杂性差异是什么:
案例1:OLE DB源查询,如下所示:
select *
from A
where A.value > 1
案例2:OLE DB源查询,where子句放在条件分割
中 select * from A
使用OLE DB Source查询后的条件分割,包含:value> 1。
性能方面,它有什么区别吗?对于更复杂的查询,它是否也会产生重大影响?
答案 0 :(得分:3)
是的,有性能差异。
案例2将返回表A中的所有数据记录,并将它们存储在SSIS内存缓冲区中,然后再将它们传递给条件分割组件进行过滤。
情况1立即将较小的数据集返回到SSIS内存缓冲区。
如需进一步阅读,请查看:
答案 1 :(得分:1)
SSIS的主要目的是使用/从异构源(例如文本文件,Excel电子表格等)导入/导出。在将数据加载到服务器之前,您可以进行某种验证,并且可以在某处记录“错误”记录。 但是,如果您计划仅将SSIS与SQL查询一起使用,并且没有在文本文件中进行任何验证或错误记录,那么您应该寻找另一种解决方案(链接服务器,OPENROWSET等)。
但是如果您仍然关注SSIS,则应该在SQL查询或数据源中包含所有可能的逻辑。
有关于如何使用SSIS准备快速提取的文章:http://www.sqllion.com/2009/04/faster-extraction-loading-by-ssis/
Try to avoid type casting or manipulating data types inside the SSIS package as it is an additional overhead for SSIS. Do it prior to the package or do typecasting in the source query of OLE DB Source component.