我对查询sql的最有效方法感到好奇。例如,有2个表(tableA和tableB)可以在1列(col1)上连接。我想为colB在tableB中不存在的所有行显示tableA的数据。
(因此,换句话说,表B包含表A的col1的子集。我想显示表A而不包含表B中存在的数据)
假设tableB有100行,而tableA是巨大的(超过1M行)。我知道可以使用“不存在(不存在)”,但是也许有更有效的方法(较少的计算时间)来做到这一点。我可能没有外部联接吗?
代码片段和注释非常受赞赏。
取决于RDBMS。对于Microsoft SQL Server ,OUTER JOIN首选NOT EXISTS,因为它可以使用更有效的Anti-Semi连接。
对于Oracle,Minus显然比NOT EXISTS更合适(在适当的地方)
您将需要查看执行计划并做出决定。