我在从源表到目标表中选择数据时遇到了一些问题,以便从源表中找出哪些数据尚未完全集成到目标表。
源表是另一个DBMS,在SQL Server中,我们使用一个链接服务器来访问源表的DBMS,而且集成几乎是从源表的列到列到目标(没有其他计算)。
当我执行这样的select语句时
SELECT A.*
FROM [ORCLE_DB]..GROUP.TABLEA AS A
WHERE NOT EXISTS (SELECT 1 FROM TABLEA as B WHERE A.ID = B.ID)选择数据需要花费很长时间,数据量很大,大约有2000万行数据。
为了选择这些行,还有其他方法可以让SELECT执行更高效、更快吗?非常感谢,任何想法和建议都将不胜感激。
发布于 2018-05-17 04:22:39
您可能会与“N+1”的分布式查询发生冲突。启发式算法在惩罚网络速度方面有点神秘。您可以使用验证这一点。
如果是这样的话,您可以通过以下方法修复:
发布于 2018-05-17 04:36:07
如果TABLEA比[ORACLE_DB]..GOUP.TABLEA小得多,则可以从oracle创建引用SqlServer TABLEA的链接服务器,然后只查询驻留在甲骨文中的视图或执行存储过程,以便在那里执行昂贵的筛选,其中大部分数据是在SqlServer上执行的。
https://stackoverflow.com/questions/50383276
复制相似问题