"不存在"和"不存在",哪一个表现更好?

kyl*_*ian 3 sql oracle

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
                          )
Run Code Online (Sandbox Code Playgroud)

如果两个objectid列都有索引,哪一个在oracle中更好?

Joh*_*Woo 9

使用NOT EXISTS.

目前执行计划可能是相同的,但如果将来更改任一列以允许NULL,NOT IN版本将需要做更多的工作.

关于NOT EXISTS和NOT IN的最重要的事情是,与EXISTS和IN不同,它们在所有情况下都不相同.具体来说,当涉及NULL时,它们将返回不同的结果.完全具体,当子查询返回一个null时,NOT IN将不匹配任何行.