我在从源表到目标表中选择数据时遇到一些麻烦,以找出源表中尚未完全集成到目标表的数据。
源表是另一个DBMS,在SQL Server中我们使用链接服务器来访问源表的DBMS,并且集成几乎只是从源到列的列到列(没有其他计算)
当我执行像这样的选择语句时
success: function(res){
alert(data);
}
选择数据需要花费很长时间,而且数据量非常庞大,大约有2000万行数据。
有没有其他方法可以选择这些行,这可以让SELECT A.*
FROM [ORCLE_DB]..GROUP.TABLEA AS A
WHERE NOT EXISTS (SELECT 1 FROM TABLEA as B WHERE A.ID = B.ID)
执行更有效,更快速地执行?非常感谢,任何想法和建议都会非常感激
答案 0 :(得分:1)
您可能会对分布式查询违反“N + 1'”。启发式方法在惩罚网络速度方面有些神秘。您可以使用SQL事件探查器验证这一点。
如果是这样,你可以通过以下方式解决:
答案 1 :(得分:0)
如果TABLEA
明显小于[ORACLE_DB]..GOUP.TABLEA
,您可以从oracle创建一个引用您的SqlServer TABLEA
的链接服务器,然后只查询一个视图或执行一个驻留在oracle中的存储过程允许在大量数据而不是SqlServer上执行昂贵的过滤。