-> SELECT 절을 평가하지 않으므로 일반적으로 IN에 비해 성능이 좋다.
-> SELECT 절에서 조회한 컬럼 값으로 비교하므로 EXISTS에 비해 성능이 떨어진다.
EXISTS : 메인 쿼리의 결과값을 서브 쿼리에 대입하여 조건 비교 후 결과를 출력한다. ( 메인쿼리 -> EXISTS 쿼리 )
IN : 서브 쿼리의 결과값을 메인 쿼리에 대입하여 조건 비교 후 결과를 출력한다. ( IN쿼리 -> 메인 쿼리 )
NOT IN과 NOT EXISTS의 NULL값에 대한 처리
NOT EXISTS : NULL 데이터에 대해 TRUE를 리턴한다.
NOT IN : NULL 데이터에 대해 FALSE를 리턴한다. NULL 처리를 하지 않을 경우 누락이 발생한다.
https://cafe.naver.com/sqlpd/7162
https://blog.naver.com/ujandgd/221688151311
https://blog.naver.com/madosa3000/221762665432
https://ikinox.tistory.com/entry/NOT-IN%EA%B3%BC-NOT-EXISTS%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90