为了找到两个数据库之间的所有更改,我将pk上的表联接在一起,并使用date_modified字段选择最新记录。EXCEPT由于表具有相同的架构,因此将使用提高的性能。我想用重写它EXCEPT,但是我不确定在每种情况下for的实现是否EXCEPT都可以执行JOIN。希望有人对何时使用有更多的技术说明EXCEPT。
EXCEPT
JOIN
任何人都无法告诉您,它EXCEPT永远或永远不会超过同等产品OUTER JOIN。无论您如何编写意图,优化器都会选择合适的执行计划。
OUTER JOIN
就是说,这是我的指导方针:
使用EXCEPT时 至少一个 下面的是真实的:
并且以下 两个 都是正确的:
重要的是要注意,EXCEPT随着等价查询JOIN变得越来越复杂和/或您依赖部分列中的重复项而不是其他列中的重复项,编写等效查询可能是一个挑战。编写NOT EXISTS等效的文档,但其可读性要比完成时EXCEPT要琐碎得多- 通常会导致制定更好的计划(但请注意,我不会说ALWAYS或NEVER,除非是按照我的方式做)。
NOT EXISTS
ALWAYS
NEVER
在这篇博客中,我演示了至少一个案例,该案例EXCEPT的正确构造LEFT OUTER JOIN和等效NOT EXISTS变体的表现都优于该案例。
LEFT OUTER JOIN