FULL OUTER JOIN的替代方案

问题描述 投票:0回答:2

我们有一个查询,查找两个不同数据库(一个SQL Server,一个Oracle)中两个表之间的差异,理论上应始终保持同步。查询将两个表中的数据拉入表变量,然后执行FULL OUTER JOIN以查找差异。我们怀疑FULL OUT JOIN部分归咎于性能问题。

依赖两个LEFT OUTER JOIN并查找连接右侧不存在的记录是否有意义?

我们还在考虑使用临时表来进一步提高性能。

sql-server
2个回答
0
投票

一种选择是进行内连接并将结果存储在临时表中。然后从TempAableWithCommonRecords中不存在的TableA中进行选择,并从tempBableWithCommonRecords中不存在的TableB中进行另一次选择

不能说如果这样做会更好,因为没有足够的信息。它只是另一种选择。


0
投票

您可以尝试处理复杂连接的EXCEPT运算符,它应该在PL-SQL和T-SQL中都有效。它将返回左表中与右表不完全匹配的任何值:

SELECT [Field1], [Field2], [Field3]
FROM Table1
EXCEPT
SELECT [Field1], [Field2], [Field3]
FROM Table2
UNION
SELECT [Field1], [Field2], [Field3]
FROM Table2
EXCEPT
SELECT [Field1], [Field2], [Field3]
FROM Table1
© www.soinside.com 2019 - 2024. All rights reserved.