본문 바로가기
IBSHEET

성능 좋은 SQL 쿼리 작성법(차집합 NOT IN, CTE 재귀 호출 활용, 쿼리 힌트 사용 주의)

by 엘리후 2023. 6. 18.

1. 차집합 구하기-NOT IN 사용주의

결과데이터 정합성 문제 OR 실행 계획 최적화 이슈

 - NULL qksghksehlwl dksgehfhr cjfl

 - NOT EXISTS 또는 다른 차집합 구현 방법 고려

 - NOT IN 필요 시 주의해서 사용

ex) WHERE ID NOT IN (SELECT ID FROM DATA WHERE ID  IS NOT NULL)

 

2. CTE-재귀 호출(순환관계 모델) 처리에 활용

예) 조직구조, 메뉴 경로, BOM, etc.

 

복잡합 조건식/유형

- 쿼리 튜닝 필요

(사진참조)

 

3. 쿼리 힌트 사용 주의

OPTION(<query_hint>)

옵티마이저 대신 쿼리 동작을 강제하는 방법 중의 하나

 

필요한 경우 DBA(or DPA/DA/전문가)검토 후 사용

 

○ 특히 공통적으로 주의가 필요한 힌트

- {REPEEATABLE READ | SERIALIZABLE}

- UPDLOCK

- FASE <n>

- OPTIMIZER FOR

- INDEX(...)

- MAXDOP

- FORCE ORDER

- { LOOP | MERGE | HASH } JOIN

 

댓글