我有下一个查询
insert into tabla_A (value_1, value_2, value_3)
select table_B.value_1, table_B.value_2, table_B.value_3
from tabla_A right join (table_C left join table_D on table_C.value1 = table_D.value1)
on table_A.value_1 = table_B.value_1
where table_A is null
正如您所看到的,我在此查询中涉及多个表,其中table_B,table_C,table_D属于Oracle数据库,Table_A位于SQL服务器中。
您认为面对此查询的最佳方式是什么?我的意思是使用较少数量的合并连接任务,并使用更多的SQL语句。还要考虑源和目标是否相同(table_A)
答案 0 :(得分:0)
最佳解决方案介于两者之间。如果您的表不是那么大并且您的Oracle服务器不忙于其他任务,那么最好只将单个A表传输给它并在那里执行查询(假设您的DW也在Oracle上)如果您有大表到加入并且您的SSIS服务器有足够的RAM来处理没有磁盘缓存的连接(这可以通过数据流缓冲区大小进行调整),然后您应该在服务器上执行中间连接,并且在SSIS服务器上执行最难的连接。 此外,您应该避免使用
insert into...
在SSIS解决方案中,因为您的插入批量作弊。使用oledb / odbc目的地!