2017-08-05 39 views
0

在下面描述的場景中,以下兩個查詢獲得相同的結果: 「我想從名爲PRODUCT的表中選擇所有不出現在單獨表中的模型所謂的PC」 這可以用下面的代碼來完成:在Oracle數據庫12c中用OUTER JOIN替換NOT IN

select model 
from product 
where model not in(
select model from pc); 

這也可以通過使用外完成JOIN:

select product.model, pc.model 
from product left join pc 
on product.model = pc.model 
where pc.model is null; 

看到,因爲這兩個查詢獲得相同的結果,是對比另一個更可取?使用OUTER JOIN代替NOT IN有什麼好處?

+1

這取決於平臺,該表的大小,指標定義,等等等等,你可以得到是怎麼回事更好的主意如果你看一下執行計劃,那麼「引擎蓋下」。你應該期待這個簡單的例子沒有什麼不同。 – Hogan

+2

這些天大多數查詢優化器應該優化兩個查詢到同一個計劃。 – dasblinkenlight

+0

也請檢查[此問題](https://stackoverflow.com/q/173041/2224701)。我個人使用大多不存在。 –

回答