2017-08-05 16 views
0

以下に説明するシナリオでは、次の2つの問合せで同じ結果が得られます。 "PRODUCTという表からすべてのモデルを選択しますが、別の表には表示されませんPC」 と呼ばれるこれは、次のコードで実現できます。Oracle Database 12cでNOT INをOUTER JOINに置き換える

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

これはまた、外部結合を使用することによって達成することができます。

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

をこれら2つのクエリは同じ結果を得るよう見て、オンになっています他のものよりも好ましい? NOT IN JOINをNOT INの代わりに使用すると、利点がありますか?

+1

それはインデックスが定義され、テーブルのサイズ、プラットフォームに依存し、などなどあなたは何が起こっているかの良いアイデアを得ることができますあなたが実行計画を見ているならば、 "ボンネットの下に"。この単純なケースでは違いはないと期待してください。 – Hogan

+2

最近のほとんどのクエリオプティマイザは、両方のクエリを同じプランに最適化する必要があります。 – dasblinkenlight

+0

[この質問](https://stackoverflow.com/q/173041/2224701)もご確認ください。私は個人的にはほとんど存在しません。 –

答えて

関連する問題