select objectid
,name
,address
from library_t l
where not exists (select *
from d107 d
where l.objectid = d.objectid
)
select objectid
,name
,address
from library_t l
where l.objectid not in (select objectid
from d107
)
如果两个objectid 列都有索引,oracle 中哪个更好?
最佳答案
使用 NOT EXISTS
.
执行计划目前可能是相同的,但如果将来任一列更改为 允许 NULL NOT IN 版本需要做更多的工作。
关于 NOT EXISTS 和 NOT IN 需要注意的最重要的一点是,与 EXISTS 和 IN 不同,它们并非在所有情况下都等效。具体来说,当涉及 NULL 时,它们将返回不同的结果。具体来说,当子查询返回一个空值时,NOT IN 将不匹配任何行。
关于sql - '不存在' 和 'not in' ,哪个性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12997386/