not in과 not exists 의 동작의 차이좀 알고 싶습니다. 3 3 5,269

by 몬태크리스토 [2014.02.04 15:15:54]


in과 exists는 동작의 차이가 in은 해당 부분의 데이터를 다 가저와 전체 비교를 하는것이고 

exists는 각 부분이 있는 데이터를 일데일로 루프를 돌며 가저오는것이라고 알고있는데 ....

이것이 맞는지도 잘 모르겠고 ....

그럼 not in과 not exists의 차이도 모르겠내요....

알려주세요....고수님들.....
by 우리집아찌 [2014.02.04 23:50:50]

차이점은 ..

NOT IN 은 해당 컬럼이 NULL 값이 있을때 값이 안나올수있다는것밖에 모르겠네요..

by 마농 [2014.02.05 09:30:11]

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


by 몬태크리스토 [2014.02.18 09:41:00]
감솨합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입