问题:我必须从SQL Server数据库和Oracle数据库中提取数据,并将它们放在一个数据集中。我遇到的问题是:SQL Server查询需要一个只能从返回Oracle查询中找到的ID。
我想知道的是:如何以不影响性能的方式解决这个问题?
答案 0 :(得分:1)
您可以使用链接服务器或将数据全部传输到一侧来执行此操作。这一切都将取决于每一方的数据量。
一般的经验法则是在数据最多的一侧执行查询。
例如,如果Oracle ID集很小,但SQL Server集很大,则将链接服务器创建到Oracle端并在SQL Server端执行此操作:
SELECT *
FROM sqlservertable
INNER JOIN linkedserver.oracletable
ON whatever
在这种情况下,如果Oracle方面很大(或者在需要加入SQL Server端之前无法预先过滤),性能通常会很差 - 并且通过拉动整个表(或者您可以确定的最小子集代替SQL Server表,并在SQL Server端执行JOIN all。