아래 조건들은 MySQL의 서브쿼리 최적화가 적용 되는 조건들입니다.
- IN(subquery) 또는 = ANY(subquery) 형태
- UNION 없는 단일 SELECT
- 집계함수 와 HAVING 절을 가지지 말아야
- 서브쿼리의 WHERE 조건이 외부쿼리의 다른 조건과 AND 로 연결
- 조인을 사용한 UPDATE 나 DELETE 가 아니어야
- 미리 수립된 실행계획을 사용하지 않는 경우(PreparedStatement 사용시 실행계획 재사용됨)
- 외부쿼리와 서브쿼리가 실제 테이블 사용(가상 테이블 사용시 세* 미조인 최적화 안됨)
- 외부쿼리와 서브쿼리가 straight_join 힌트 미사용
- inner 조인 다음 outer 조인을 진행