SQL:排除的性能比较(Join vs Not in)

som*_*one 6 sql performance join

我很想知道在sql上查询排除的最有效方法.例如,有2个表(tableA和tableB)可以在1列(col1)上连接.我想为tableB中不存在col1的所有行显示tableA的数据.

(换句话说,tableB包含tableA的col1的子集.我想显示没有tableB中存在的数据的tableA)

假设tableB有100行,而tableA是巨大的(超过1M行).我知道'不在(不存在)'可以使用,但也许有更有效的方法(更少的比较时间)来做它.我不喜欢外连接?

我们非常感谢代码片段和评论.

Mar*_*ith 7

取决于RDBMS.对于Microsoft SQL Server,NOT EXISTS优先于OUTER JOIN,因为它可以使用更有效的Anti-Semi连接.

对于Oracle Minus显然更喜欢 NOT EXISTS(如果合适的话)

您需要查看执行计划并做出决定.