IN 과 EXISTS 의 구문적이 차이를 보시기 전에
상관관계 서브쿼리와 비상관관계 서브쿼리를 구별할 줄 알아야 할 듯 합니다.
서브쿼리 안에 메인쿼리의 컬럼이 조건으로 주어지느냐 안주어지는냐의 차이가 있지요.
메인 컬럼이 조건으로 주어지는 경우 상관관계 서브쿼리가 되며 서브쿼리는 확인자 역할을 하게 됩니다.
메인 컬럼이 조건으로 주어지지 않는 경우 비상관관계 서브쿼리가 되며 서브쿼리는 제공자 역할을 하게 됩니다.
하지만 여기까지는 구문을 논리적으로 해석한 것이구요.
구문 자체적으로 쿼리 변환 없이 수행된다면
제공자 역할을 하는 비상관 서브쿼리 IN 이나 NOT IN 은 필터방식으로 풀릴 것이고
확인자 역할을 하는 상관 서브쿼리 Exists 나 Not Exists 는 반복 수행 방식으로 풀리겠지요.
그러나 쿼리변환이라는 변수가 있습니다.
즉 서브쿼리는 서브쿼리로 수행되기 보다는 조인 방식으로 풀릴때가 더 많습니다.
In 이나 Exists 는 보통 Semi 조인으로 많이 풀리죠.
실제 동작방식에서는 차이가 없이 동일하게 동작할수도 있습니다.
실행계획을 일일이 확인 비교해봐야 할 듯 합니다.