where a.code NOT IN (select deptno from tab2 where gcode = b.code) 위와 같이 NOT IN 의 연산자가 올 경우, SUB QUERY의 조건을 사용하여 NOT IN 대신 NOT EXISTS를 사용하여 개선할 수 있습니다. where a.code IS NOT NULL and a.code NOT IN ( select /*+ MERGE_AJ */ deptno from tab2 where gcode = b.code and deptno IS NOT NULL) 위와 같이 NOT IN 을 사용하는 경우 힌트를 사용하여 성능을 더욱 개선할 수 있습니다. 다음과 같이 /*+ MERGE_AJ*/ 나 혹은 /*+ HASH_AJ */ 와 같은 해당 조인시에서 양쪽 집합만을 추출하는 것에 대해 최적인 실행 계획을 수립, 실행하라는 힌트를 쓸 수 있습니다. 이 때 양쪽 집합의 조건에 NOT NULL을 주는 것은 필수 조건으로 오라클의 버그를 피하기 위한 방법입니다. |
0