FULL OUTER JOIN的替代方案

时间:2019-02-14 17:19:01

标签: sql-server

我们有一个查询,用于查找两个不同数据库(一个SQL Server,一个Oracle)中的两个表之间的差异,理论上应该始终保持同步。该查询将两个表中的数据提取到表变量中,然后执行FULL OUTER JOIN查找差异。我们怀疑完全淘汰是造成性能问题的部分原因。

依靠两个左外部联接并查找联接右侧不存在的记录是否有意义?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

一种选择是进行内部联接并将结果存储在临时表中。然后从TableA中进行选择,其中tempTableWithCommonRecords中不存在 以及另一个从TableB中选择的tempTableWithCommonRecords

中不存在的选项

不能说这是否会更好,因为没有足够的信息。这只是另一个选择。