REWRITE

서브쿼리와 OR 재작성은 계획 비교가 먼저다

JOIN, EXISTS, IN, UNION ALL은 모두 후보일 뿐이다. 최신 옵티마이저는 자동 변환을 하기도 하므로 변경 전후 계획을 비교한다.

SubqueryORPlan
상관 서브쿼리 반복 실행이 남는지 실제 계획 확인
IN / EXISTS NULL, 중복, semi join 변환 확인
OR 분리 UNION ALL 전후 인덱스와 중복 조건 확인
바꾸기 전실행 계획, rows, loops, I/O를 기록
바꾼 뒤동일 데이터와 바인드로 재측정
채택 기준성능 이득, 의미 동일성, 유지보수성