SELECT DISTINCT ST.USN  AS USN
  FROM TLMS_STUDENT    ST
 WHERE 1 = 1
   AND ST.SUBJ = '3'
   AND NOT EXISTS (SELECT *
                     FROM TLMS_SUBJSCM A
                    WHERE 1 = 1 
                      AND A.USN  = ST.USN  
                      AND A.SUBJ = ST.SUBJ )



SELECT DISTINCT ST.USN  AS USN
  FROM TLMS_STUDENT    ST
 WHERE 1 = 1
   AND ST.SUBJ = '3'
   AND ST.USN  NOT IN (SELECT USN
                         FROM TLMS_SUBJSCM A
                        WHERE 1 = 1
                          AND A.SUBJ = ST.SUBJ)


두 쿼리의 실행계획 차이가 없다. 요즘 DB 성능 좋다.
결국 차이는 NULL일때 처리 유무이다.
* NOT IN 구분은 NULL 값을 인식 못한다.
* DBMS는  ORACLE 11G 이다.

저작자 표시
신고

'DB / NoSQL > Oracle / Toad' 카테고리의 다른 글

[Oracle] TO_CAHR, TO_NUMBER, TO_DATE  (0) 2012.01.17
[Oracle] SUBSTR() 함수  (0) 2011.12.27
[Oracle] NOT IN VS NOT EXISTS 실행계획  (0) 2011.12.23
[Oracle] 집계함수  (0) 2011.12.22
[Oracle] Oracle SQL Developer Debuging  (0) 2011.12.01
[Oracle] TRUNC 절삭 함수  (0) 2011.11.24
posted by 뚱2