2016-12-05 10 views
0

2つのクエリが同じように動作していると考えました。返す行は非常に異なります。なぜそれらが違うのか教えてください。SQLクエリのDiffrences In Exifs

1.

SELECT de.dept_no from dept_emp de where de.dept_no 
IN (select d.dept_no from departments d where d.dept_name='Finance'); 
17346 rows in set (0.02sec) 

2.

SELECT de.dept_no from dept_emp de where EXISTS 
(select d.dept_no from departments d where d.dept_name='Finance'); 
331603 rows in set (0.83sec) 
+0

あなたの存在クエリーISN」を使用すべき最初のクエリで何達成するためのより高速な方法をしたい場合には、少なくとも1つの部門という名前の資金を存在と仮定すると、クエリが

SELECT de.dept_no from dept_emp de where TRUE 

に等しく、 t相関する。 –

+0

ああ私はこれを持っています。ありがとう – Lee

答えて

0

EXISTが真偽の比較、2番目のクエリを実行しますが、「金融」という名前の少なくとも一つの部門を持っている場合は、サブクエリの部分は常に真でありますすべての行をdept_empに返します。あなたが登録しよう

SELECT de.dept_no FROM dept_emp de INNER JOIN departments s 
on de.dept_no = d.dept_no 
WHERE de.dept_no;