chick chick pok pok

NOT IN 쿼리를 사용할 때 발생할 수 있는 문제점에 대해 서술하시오.

NOT IN 쿼리는 부정조건으로, 주어진 값을 필터링을 해야 하기 때문에 index range scan 대신 fullscan해 더 많은 CPU사용량과 latency를 유발한다. 또한 NULL값 처리에서, NULL비교를 할 때 UNKOWN을 반환해 항상 빈 결과를 반환할 수 있다.

이에 대한 대안으로NOT EXISTS와 OUTER JOIN을 사용할 수 있다. NOT EXISTS는 행 단위로 스캔해 매칭되는 첫 행을 찾자마자 중단해 존재하지 않음을 최적으로 확인한다. OUTER JOIN은 pk를 사용하여 최적화된 연산을 수행하고 인덱스를 효과적으로 사용해 NOT IN보다 훨씬 효율적이다.

DB Execution plan 사용자가 SQL을 실행하여 데이터를 추출하려로 할 때, 디비 옵티마이저가 수립하는 작업 절차이다.

  1. SQL 해석
  2. 실행 계획 수립
  3. 실행 다음과 같이 3단계로 분리할 수 있다. 데이터베이스가 쿼리를 처리하는 방법과 접근 경로를 결정하는 중요한 요소이다. 실행 계획 분석과 최적화는 쿼리의 성능을 향상시키기 위해 실행 계획을 분석하고 최적화하는 과정을 의미한다. 다음과 같은 최적화 기법이 이때 적용된다. 1 . 인덱스 활용 2 . 조인 방식 최적화 3 . 테이블 파티셔닝 4 . 통계 정보 수집 5 . SQL 리팩토링

출처: SQL Land, IN vs NOT IN vs EXISTS vs NOT EXISTS Performance Considerations