我们有一个查询,用于查找两个不同数据库(一个SQL Server,一个Oracle)中的两个表之间的差异,理论上这两个表应该始终保持同步。该查询将两个表中的数据都放入表变量中,然后执行一个完整的外连接来查找差异。我们怀疑FULL OUT JOIN是造成性能问题的部分原因。
依赖两个左侧外部连接并查找不存在于连接右侧的记录是否有意义?
我们还在考虑使用临时表来进一步提高性能。
发布于 2019-02-15 01:46:14
您可以尝试使用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发布于 2019-02-15 03:00:56
一种选择是进行内连接,并将结果存储在临时表中。然后执行select from TableA where not exists in tempTableWithCommonRecords和另一个select from TableB where not exists in tempTableWithCommonRecords
不能说这是否会表现得更好,因为没有足够的信息。这只是另一种选择。
https://stackoverflow.com/questions/54695832
复制相似问题